|
导航:[首页]->[cpp]->[fork时分配内存失败的陷阱]
当某个进程占用很大内存,假设占用了整个物理内存的90%,此时若fork,由于fork出来的进程会共享内存,但是对于冲突的地方,需要作内存拷贝。若冲突的内存特别多,则会导致内存分配失败。 解决办法可以使用vfork替换fork。不过system,popen等函数都得重写。 另外还有改法是修改内核在分配内存时的策略,具体是修改文件/proc/sys/vm/overcommit_memory overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。 ##参考
|