为什么Shake建议禁用空闲垃圾回收?

时间:2016-01-04 09:29:46

标签: haskell shake-build-system

在Shake文档中,它建议使用标志-with-rtsopts=-I0进行编译以禁用空闲垃圾回收。为什么Shake建议这样做?

1 个答案:

答案 0 :(得分:19)

默认情况下(没有标志)如果所有Haskell线程都空闲0.3秒,GHC将执行垃圾收集(GC)。由于构建系统定期运行外部进程,因此对于所有Haskell线程而言,所有Haskell线程都是空闲的。 0.3s,这会导致大量不必要的垃圾收集。由于机器很可能是从Shake正在运行的过程中完全加载的,因此GC将花费一些时间,否则可能会做有用​​的工作。如果GC运行多线程,问题会更加严重。