10

我对垃圾收集的工作原理很感兴趣。我已经阅读了一些工作,如标记和清除、停止和复制、分代 GC 等......我想尝试实现其中的一些并比较它们的行为。什么是开始尝试我自己的好方法?理想情况下是 C、Java 或 Python 中的东西(尽管最后两个本身是垃圾收集的,所以似乎很难使用它们......)

4

7 回答 7

14

我自己从来没有玩过它,但总是提到与 C/C++ 一起使用的是Hans Boehm 的.

于 2008-10-29T19:44:45.767 回答
2

.NET 运行时和 Java 运行时现在是开源的,因此如果您想使用当前支持的编程语言,可以自行试验运行时。但是,如果您想自己执行此操作,您可能必须创建自己的运行时,它有自己的语言。

于 2008-10-29T19:43:38.407 回答
1

Parrot多个垃圾收集器

于 2008-10-29T23:32:42.390 回答
0

实现自己的 JVM。没有什么花哨的,只是基本的。有很多程序/编译器/语言可以生成 JVM 代码,因此您有大量材料可供测试。

于 2008-10-29T19:43:19.700 回答
0

玩起来很有趣,但垃圾收集是一门黑暗的艺术。不是让它工作,而是让它以最新 VM 的效率工作。

我们谈论的是多阶段和魔法,它使分配速度比 malloc 更接近堆栈分配。

整个伊甸园概念震撼人心。

您可能想阅读一些有关所使用技术的白皮书。

这是一篇似乎有很好概述的文章(仅来自快速谷歌/扫描)

http://www.devx.com/Java/Article/21977/0/page/1

于 2008-10-29T19:58:57.953 回答
0

开发Factor 编程语言的Slava Pestov写了许多关于他实现垃圾收集器的帖子。你可以通过这个链接找到关于它的帖子:

http://factor-language.blogspot.com/search?q=garbage+collection

特别是从 2006 年 9 月 24 日星期日的帖子开始。

于 2008-10-29T23:28:44.833 回答
0

MMTk包含大量高性能垃圾收集器。这包括:

  • 复制收藏家
  • 追踪收集器
  • 引用计数收集器

它也有:

  • 阻止世界收藏家
  • 并发收集器

Since it is a research platform it has some advance collectors such as the generation reference counting collector.

于 2009-03-03T04:47:02.723 回答