代码之家  ›  专栏  ›  技术社区  ›  rem

让GHC做更多的GCs?

  •  2
  • rem  · 技术社区  · 8 年前

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

    2 回复  |  直到 8 年前
        1
  •  2
  •   sclv    8 年前

    对于直接增加GC,您可以设置 -Iseconds 标记为低于0.3的值,以增加空闲GC的频率。您还可以设置 -c 使用压缩算法,该算法通常应减少内存使用量(以便更接近实际使用的内存,而不是GC开销)。您还可以设置 -Asize 通过提供较小的分配区域,一般应增加GC的数量。

        2
  •  0
  •   sapanoia    8 年前

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

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

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