我想用 Java 或 Haskell 实现垃圾收集器 (GC),但这有意义吗?

当我自己的 GC 实现而不是实现语言的 GC 启动时,我能控制吗?

我想这个问题可以有三种答案:

  • 在运行虚拟机 (VM) 时设置一个标志,禁用实现语言的 GC。
  • 使用一种特殊的结构,让我可以管理自己的内存,例如使用延续传递样式 (CPS) 来管理自己的评估策略。
  • 不,使用没有 GC 的语言。

  • 看看这些:
  • 我更喜欢第二个选项,因为我将能够在所有语言中使用该构造。
  • 我不喜欢第一个选项,因为我还必须管理解释器的内存。
  • (我也不喜欢第三个选项,但我无法控制)

  • 这不是 I build a interpreter on a language with a garbage collector. I need a garbage collector for the interpreter? 的副本,因为我做 而不是 想要用底层 GC 引导我的解释器。

    最佳答案

    有什么意义?如果你想实现自己的 GC 只是为了学习所涉及的算法,那没关系。 GC 基本上只是管理相互引用的资源,直到它们不引用为止。这在 Java 和其他 GCed 语言中完全可行。您只需在对象上调用另一个方法并将其从“Activity ”对象列表中删除,而不是释放内存。

    对于运输产品?没有把握。您可以利用实现语言中的现有机制,但特别是 GC 通常需要控制何时应该放弃内存。如果实现语言阻止了这一点,那就是一个问题。

    关于java - 在带有垃圾收集的语言中实现垃圾收集器是否有意义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43789590/

    10-10 18:07