我受到服务器主机上1GB内存的限制。当我想编译像git-annex这样的大型程序时,Cabal占用了很多内存。是否有办法限制cabal或gcl使用某些选项来限制内存的使用?
我用一些细节更新了问题:我在non主机上运行cabal (1.22.4.0)和Ghc 7.10.2 (CentOS 7-64位),访问shell (非根访问)。due管理员/机器人通常会因为编译而容忍一些突发事件。但是Ghc / Cabal需要太多的内存,花费太多的时间进行某些包的编译。所以系统会自动杀死所有进程。
我需要多次重新启动编译,才能最终获得成功的结果。
我的主要目标是编译结束于成功,不管花多长时间。
发布于 2020-02-05 08:51:45
@reyman64 64建议确认在Xubuntu 18.04上使用2GB内存。谢谢!因此,cabal install -v cabal-install挂起了系统。下列各项运作良好:
cabal install -v --ghc-options='+RTS -M1G -RTS' cabal-install发布于 2015-11-05 14:20:23
编辑:这篇文章不清楚真正的问题,所以忽略这个答案,因为它是用其他的想法写的,但是有一些有用的评论。
我认为,如果您将Cabal或GHC的内存消耗限制在1GB以内,您就会因为Linux内存保护提前终止而开始获得许多失败的构建(或者不管它叫什么--有人吗?)如果你想办法说服Cabal自己少使用内存,并且说服GHC继续节食的话,情况可能就不是这样了。
最近,我在一台1GB虚拟机上构建Curry KiCS2时遇到了这种情况,该虚拟机只有1GB的交换空间。(当然,我的目标不是限制内存消耗,而是让该死的东西完成构建,所以我所做的就是将VM内存增加到4GB,交换到8GB,但这显然不是您想要的。)
因此,我认为GHC在编译过程中消耗大量内存可能是没有办法的。不过,请确保关闭了并行编译。通过编译标志(可能是GHC本身),或者关闭可能消耗大量内存的优化阶段,以减少GHC的内存消耗。
不过,聪明的头脑可以证明我错了。
https://stackoverflow.com/questions/33546404
复制相似问题