cygwin unable to allocate heap

最近在编译一些较大的软件包时经常会出现一些 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值