所以这必须在之前出现几千次,但我刚刚阅读了这篇文章,详细介绍了为什么 Android 和 iOS 上的垃圾收集速度非常慢。
要点之一是,只要有足够的空闲空间供收集器工作,垃圾收集就可以了。
我的问题是:GHC 的内存管理实现是否也容易受到此影响?
所以这必须在之前出现几千次,但我刚刚阅读了这篇文章,详细介绍了为什么 Android 和 iOS 上的垃圾收集速度非常慢。
要点之一是,只要有足够的空闲空间供收集器工作,垃圾收集就可以了。
我的问题是:GHC 的内存管理实现是否也容易受到此影响?
可以,尽管整个情况更复杂。GHC 主要使用复制收集器。当堆增长一定数量时触发 GC,目前是 2x。由于复制收集器的策略是将活动对象复制到新内存中,因此您有可用的可用 RAM 非常重要,尽管不像那篇文章所指出的那样,您的活动数据大小是 6 倍。GHC 的 IIRC 大约为 2.5-3 倍,大约是最小值。
GHC 还提供了一个压缩收集器,它几乎不需要那么多额外的 RAM。压缩和复制收集方案之间的选择是根据内存使用情况以及RTS-c
和-M
标志动态进行的。