2008-10-29 25 views
10

我对垃圾收集的工作方式感兴趣。我已经读过一些如mark-and-sweep,stop-and-copy,generational GC等的工作......我想试验一下这些方法并比较它们的行为。什么是开始尝试自己的好方法?理想情况下,C,Java或Python(尽管后两个本身是垃圾收集的,所以它似乎很难使用它们......)我如何试验垃圾收集?

回答

14

从来没有玩过它,但总是被提及用于C/C++的是Hans Boehm's

+0

我想补充,这被认为是*如果你想保持内/ C的C++而不是使用虚拟机... – 2008-10-29 20:34:38

+0

+1,我经常使用它,当我工作的事情非常的首选*垃圾收集器复杂的地方,双免费()会拼出灾难。 – 2009-03-03 04:58:41

+0

这是正确的,它也是gcc项目正在使用的GC。 – none 2009-05-20 19:33:03

0

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

2

.NET运行时和Java运行时现在是开源的,所以如果您想要使用当前的支持编程语言,您可以尝试运行时它自己。但是,如果你想自己做,你可能需要创建自己的运行时,它有自己的语言。

0

好玩,但垃圾收集是一个黑暗的艺术。不要让它工作,而是要使它与最新的虚拟机的效率一起工作。

我们正在谈论多阶段和魔术,这使得分配速度比malloc的堆栈分配速度更可比。

整个伊甸园的概念岩石。

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

这里,似乎有一个很好的概述(只是从一个快速谷歌/扫描)谁又发展了Factor programming language写了一些职位对他实施垃圾收集的文章

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

0

MMTk包含一大组高性能垃圾收集器。它包括:

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

它还具有:

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

由于它是一个研究平台,它有一些先进的收集器,如generation reference counting collector