我对垃圾收集的工作原理感兴趣。我已经阅读了一些工作,如标记和扫描,停止复制,分代GC等...我想尝试实现其中的一些并比较它们的行为。什么是开始尝试我自己的好方法?理想情况下是C,Java或Python中的东西(虽然最后两个本身是垃圾收集的,所以看起来很难使用它们......)
答案 0 :(得分:14)
我自己从未玩过它,但总是被提及与C / C ++一起使用的是Hans Boehm's。
答案 1 :(得分:2)
.NET运行时和Java运行时现在是开源的,因此如果您想使用当前的支持编程语言,可以自行试验运行时。但是,如果你想自己做这个,你可能需要创建自己的运行时,它有自己的语言。
答案 2 :(得分:1)
答案 3 :(得分:0)
实现自己的JVM。没什么特别的,只是基础知识。有很多程序/编译器/语言可以生成JVM代码,因此您可以使用大量材料进行测试。
答案 4 :(得分:0)
玩的乐趣,但垃圾收集是一种黑暗的艺术。不要让它工作,而是让它以最新VM的效率工作。
我们正在讨论多阶段和魔术,这使得分配速度与堆栈分配相比可以比malloc更具可比性。
整个伊甸园概念摇滚。
您可能想阅读一些有关所用技术的白皮书。
这篇文章似乎有一个很好的概述(仅限于快速谷歌/扫描)
答案 5 :(得分:0)
Factor programming language写了一些关于他实现垃圾收集器的帖子。您可以通过以下链接找到帖子:
http://factor-language.blogspot.com/search?q=garbage+collection
特别是从2006年9月24日星期日的帖子开始。
答案 6 :(得分:0)
MMTk包含大量高性能垃圾收集器。它包括:
它还有:
由于它是一个研究平台,它有一些先进的收藏家,如generation reference counting collector。