有没有办法在编译期间限制 ghc 的内存使用,而不影响代码质量?我在一台 2GB 的机器上,它在构建过程中真的停止了。GHC 版本 7.10.3,Ubuntu 14.04,4GB 交换。
小智 1
一种方法是使用有内存限制的容器。我目前正在测试这个理论,它是有效的,但你会遇到一个主要的缺点,因为你为内存设置的限制将导致 GHC 只分配交换空间。这需要很长时间。
看看这个解决方案可能也是个好主意。我引用的是:
-j 只是告诉 GHC 跨模块并行编译。这可以增加编译器所需的最大堆大小。
-A 设置苗圃大小;首先,它不会影响最大堆大小,但在运行并行程序(例如带有 -j 的 ghc)时很有帮助,可以最大限度地减少垃圾收集的频率。
-M 的定义有点棘手。其一,它定义了最大堆大小,超过该大小我们将终止。然而,我们也在垃圾收集器中使用它来做出有关 GC 调度的各种决策。我承认我对这里的细节不是很熟悉。