让GHC做更多的GC?

时间:2016-04-23 21:34:31

标签: haskell garbage-collection ghc

为了更准确地衡量一些程序的最大实时大小,我想让运行时系统更频繁地进行垃圾收集。是否有直接/间接导致更多GC的GHC标志?我知道插入performGC可以在某种程度上实现这一点,但是有很多程序可供使用。

2 个答案:

答案 0 :(得分:2)

为了直接增加GC,您可以将-Iseconds标志设置为低于0.3的值,以增加空闲GC的频率。您还可以将-c设置为使用压缩算法,这通常应该减少内存使用量(使用更接近实际使用的内存而不是GC开销)。您可能还希望将-Asize设置为低于512k的值,通过给出较小的分配区域通常应该增加no。地方选区。

答案 1 :(得分:0)

除非您明确知道更适合您的代码的GC调整,否则我建议不要强制使用更高频率的GC。 GC运行可能非常昂贵。

是的,你的程序使用“太多”内存,但这种宽容是GC运行良好的原因。如果您允许的开销是严格需要的内存的2-3倍(不知道GHC GC的数据),GC运行可以更频繁地安排。

您说您不想打开内存分析,因为它会干扰优化,但强制GC可能会更糟。如果过多地增加堆上的压力,最终可能会对GC运行进行基准测试。