2014-09-21 53 views
1

我在考虑减少内存受限系统(如移动设备)中垃圾收集器的开销。通过开销我的意思是暂停时间,或垃圾收集所花费的总执行时间的一小部分。我开始了解硬件辅助垃圾收集器的一些事情,并且我有兴趣开发它。 我想知道,在这方面做了什么。 我可以使用模拟器来估计我的垃圾回收器的效率吗?或者我必须在芯片上制作我的设计?有没有可以运行Java程序的模拟器。H/W辅助垃圾收集器

+0

尝试在http://cs.stackexchange.com/上询问,每个人都同意的唯一真正的H/W协助是能够绕过CPU缓存写入(也可能读取)到RAM。 – 2014-09-27 11:48:54

回答

0

我想知道,在这方面所做的一切都已经完成。

如果回到1980年代,Symbolics 3600(又名Lisp Machine)对标记内存和写屏障提供硬件支持。后来还有关于话题的学术研究。然而,收到的智慧是支持垃圾收集的专用硬件不符合成本效益[1](第221页)。

我可以使用模拟器来估计我的垃圾收集器的效率,或者我必须在芯片上制作我的设计?

我想这两种方法将工作(给予足够的努力),但都具有使其很难“执行”的问题,都保持开放是否任何事情,你发现很可能会成为商业上可行的问题。

在开始认真地讨论这个话题之前,你应该对以前的研究做一个彻底的回顾。至少抓住下面的书籍,找到并阅读他们提到的硬件gc支持的论文和文章。

有什么模拟器可以运行java程序。

你说的是一个硬件模拟器,它可以运行编译到模拟硬件(假设)指令集的程序。你的项目的一部分将是实现一个Java编译器后端来生成该指令集中的代码。

这样的模拟器+编译器可能存在,但有可能它不会提供给您。

参考文献:

[1] “垃圾收集:算法用于自动存储器管理” 由R. Jones和R.林斯,威利1996

[2]“的垃圾收集手册:艺术自动内存管理“由R.琼斯,答霍斯金斯和R.莫斯。查普曼和霍尔,2011年

1

有一个working approach to HW supported GC

崖点击写道:事情我们专门为Java做:

GC读屏障能够完全并行&并发GC;我们可以无限期地在400G堆上维持40G /秒的分配,最大暂停时间为10-20毫秒。由于读取屏障(部分可能,因为我们拥有操作系统并可以播放主要的页面映射技巧),这种超级GC是部分可能的。

的阅读屏障将在故障快速陷阱,在默认情况下得到提升到GC-模式的陷阱处理程序。这可让故障CPU修复对象引用并继续,而无需等待GC追上。

当然,整个文本是值得一读的。你最有可能想看这video