如何禁用GHC Haskell中的垃圾收集?

nh2*_*nh2 13 haskell ghc

如何禁用GC,或大大降低GC的频率?

就像给它+RTS一些巨大的堆或分配大小的选项可能?

我希望看到我的程序在没有GC发生时的行为.

nh2*_*nh2 17

(在freenode的#ghc卡特的帮助下)

没有切换到完全禁用GC.而是使用以下所有+RTS运行时选项:

  • 使用禁用空闲时间垃圾回收-I0.
  • 将"托儿所"=="分配区域"大小设置为非常大的值,例如-A100G,只有在分配区域已满时才会执行GC.

有关这些选项的说明,请参阅https://downloads.haskell.org/~ghc/7.8-latest/docs/html/users_guide/runtime-control.html.

请注意,您将快速耗尽RAM.

  • 嗯... _you_可能很快耗尽内存,但不是每个人都会.;-).你也可以通过mark-sweep,`-c`来消除copy-collect,切换到一代(`-G`),并降低需要的可用空间量(`-mN`). (8认同)