垃圾收集器可以安全地使用纯粹的,功能性的,急切评估的语言做出什么样的假设?

w.b*_*ian 2 garbage-collection jvm functional-programming

澄清一下这个问题:

垃圾收集器(例如JVM使用的垃圾收集器)由于它们支持的语言的性质而涉及很多复杂性.与JVM垃圾收集器相比,为纯粹的,功能性的,热切评估的编程语言而构建的垃圾收集器将进行哪些简化?

Kon*_*osa 5

我几乎不是函数式语言设计的专家,但在考虑你的问题时,我立即想到了以下主题:

  • 最有可能是世代GC,至少我没有理由不应该这样做.调整到大量临时对象可能会受益

  • 没有写入障碍 - 由于不可变性,无法创建从旧对象到新对象的引用.在代际GC的情况下,没有较旧到年轻的引用意味着不需要记忆集,因此管理它们不需要写入障碍.在我的拙见中,这是一个很大的简化.

  • 更容易的安全点 - 由于函数式语言的本质,函数调用比面向对象编程更密集.偶数循环可以定义为递归函数调用.这应该可以简化GC安全点的实现 - 例如,简单地在每个函数入口上.例如,阅读本文作为参考.

  • 没有固定 - 如果我们假设的纯函数式语言不支持本机代码协作,则在压缩GC时不需要对象固定.这可以大大简化其设计.

  • 没有最终确定 - 对象终结可能不适合纯函数式语言.我觉得这打破了参考透明度.如果我们不支持本地资源,那么首先就不需要它.