选择哪个JVM用于GC调试?

12

我设计了一个垃圾回收算法,想在JVM上实现并进行基准测试。

请问有没有人有经验可以推荐一种易于操作的实现方式,但仍具备内置的垃圾回收机制,以便进行有意义的比较?

编辑:我想使用带有垃圾回收机制的JVM收集统计数据,然后将其垃圾回收机制替换为我的算法,再进行比较。我需要好的垃圾回收机制,否则比较就没有意义,但我也需要代码不太难处理的东西(HotSpot有很多汇编语言代码,使任务更加困难)。


有趣的是,任何人都会发明一种新的GC算法。 你认为你能改进已经存在的算法吗?或者你只是想更多地了解编程? - 700 Software
4
这是一种使用引用计数和循环断开方法的处理方式。虽然会增加内存开销,但可以持续进行垃圾回收。是的,人们仍在研究垃圾回收,这个问题还没有得到解决。 - cjdk
除非这个循环中断真的很聪明且连续,否则我不认为它与那些现有算法有什么不同(在JVMs中未使用,但由CPython和PHP等使用,可能还有更多)。 - user395760
这是 ;) 你可以等待论文。假设基准测试显示其价值。 - cjdk
你发现了有趣的东西吗?你能够做出改进了吗? - 700 Software
3个回答

7
我认为来自Oracle Labs的Maxine研究VM将完全符合您的需求。
来自他们维基百科首页的引用:
“项目概述:在这个现代化、托管语言的时代,我们对虚拟机的要求越来越高:更好的性能、更强的可伸缩性以及对最新语言的支持。然而,在多种语言编写的成熟、复杂、生产虚拟机的背景下,研究和实验是必不可少的,但已经不再实际。”
“Maxine VM是一个下一代平台,它在这个研究领域建立了一个新的生产力标准。它完全用Java编写,与现代Java IDE和标准JDK完全兼容,具有模块化架构,允许插入GC等子系统的替代实现和编译,并配备了专用开发工具(Maxine Inspector),用于调试和可视化VM运行时状态的几乎所有方面。”
这里有一个出色的视频演示其内存监控实用程序:

虽然仔细看来,这可能是一个不错的起点,但它内置的GC显然不太好。http://wikis.sun.com/display/MaxineVM/Memory+Management - cjdk

0

我不知道有哪些没有内置GC的编程语言;如果没有GC,Java就不是很好用了。为什么不从OpenJDK或Harmony开始呢?


0

也许你不需要一个JVM,但是一个虚拟机用于测试你的算法就足够了。除非你必须使用JVM,否则你可以使用APache Harmony或者我推荐另一个基于博士论文创建的虚拟机VmKit。你可以查看它并浏览源代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接