限制 GHC 的内存使用

Posted

技术标签:

【中文标题】限制 GHC 的内存使用【英文标题】:Limiting GHC's memory usage 【发布时间】:2017-05-12 06:44:00 【问题描述】:

有没有办法在编译期间限制 ghc 的内存使用,而不影响代码质量?我在一台 2GB 的机器上,它在构建过程中确实停止了。 GHC 版本 7.10.3,Ubuntu 14.04,4GB 交换。

【问题讨论】:

【参考方案1】:

一种方法是使用有内存限制的容器。我目前正在测试这个理论,它有效,但你会有一个主要的缺点,因为你为内存设置的限制会导致 GHC 只分配交换空间。这需要很长时间。

看看this solution 也可能是个好主意。我在引用:

-j 只是告诉 GHC 跨模块并行编译。这个可以 增加编译器所需的最大堆大小。

-A 设置托儿所大小;首先订购不影响 最大堆大小,但在并行运行时很有帮助 程序(例如带有 -j 的 ghc)来最小化我们使用的频率 必须垃圾收集。

-M 有点难以定义。一方面,它定义了最大堆 超出我们将终止的大小。但是,我们也使用它 垃圾收集器对 GC 调度做出各种决定。生病 承认我对这里的细节不是很熟悉。

【讨论】:

以上是关于限制 GHC 的内存使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Haskell 中查找程序的内存使用情况

Haskell,分析导入库的内存使用情况

GHC 分析文件和图表是矛盾的

限制MongoDB使用的内存

如何限制Linux内存的使用

Linux 如何限制内存的使用