天天看点

关于内存崩溃经验

例如开10个子进程

(1)尽量不要在子进程中分配和释放内存,比如可以可以先分配好固定的10块内存,每次拿空闲的给某个子进程用。类似内存池的思想。

(2)尽量不要在子进程内调用界面ui元素的实例,尽量使用windows消息机制,将操作发送到ui元素的句柄。实在不熟悉的消息需要调用ui元素的话,可以做个原子互斥。让子进程对ui元素的操作互斥住。

(3)尽量不要在子进程内使用全局变量,实在要用的话,读的时候,做原子互斥拷贝一份。最后用完写回去的时候,再做原子互斥写回去。

(4)能在主进程计算的过程,尽量在主进程计算。不放到子进程中操作。例如:子进程依次处理一组词,进行url编码,然后提交到某处,取回结果。可以先对词全部进行url编码,给每个子进程一个url编码后的词,则子进程只干提交到某处,取回结果。因为有的语言处理各种编码解码的模块容易有bug,子进程交叉操作的时候,容易释放不干净内存,越积越多。