4

所以这必须在之前出现几千次,但我刚刚阅读了这篇文章,详细介绍了为什么 Android 和 iOS 上的垃圾收集速度非常慢。

要点之一是,只要有足够的空闲空间供收集器工作,垃圾收集就可以了。

我的问题是:GHC 的内存管理实现是否也容易受到此影响?

4

1 回答 1

2

可以,尽管整个情况更复杂。GHC 主要使用复制收集器。当堆增长一定数量时触发 GC,目前是 2x。由于复制收集器的策略是将活动对象复制到新内存中,因此您有可用的可用 RAM 非常重要,尽管不像那篇文章所指出的那样,您的活动数据大小是 6 倍。GHC 的 IIRC 大约为 2.5-3 倍,大约是最小值。

GHC 还提供了一个压缩收集器,它几乎不需要那么多额外的 RAM。压缩和复制收集方案之间的选择是根据内存使用情况以及RTS-c-M标志动态进行的。

于 2013-07-29T16:21:18.333 回答