cygwin unable to allocate heap

来源:互联网 发布:王传君我不喜欢知乎 编辑:程序博客网 时间:2024/05/17 02:46
最近在编译一些较大的软件包时经常会出现一些couldn't allocate heap的错误,一会是gcc.exe,一会是make.exe,一会是bash...不过我发现这些错误通常只有重复执行make多几次,最终都会通过.
 
我猜想这可能是因为heap size设置太小的原因造成的. 而多重复几次可以成功的原因是因为这个makefile牵涉到许多次的编译以及链接工作,而其中的heap没有得到很好的释放,结果积累下来就超过了所设置的heap大小.而重复执行时,之前在heap size没超过之前编译成功的文件已不需要继续编译或链接,这样不再占用heap size,从而可以继续编译以下的内容,所以等效来看只是将一个需要大heap的工作分解成几个占用小heap的工作.但是当单个不再可分解的工作所需的heap size就超过了限制估计是无法通过这种方法来解决的.
 
那如何能够增加cygwin的heap尺寸呢?
尝试1:
Cygwin
程序缺省可以分配的内存不超过384
MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的
HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。田家一个DWORD键heap_chunk_in_mb并把它的值设为
需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下:
regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin
原创粉丝点击