H / W辅助垃圾收集器

时间:2014-09-21 14:23:33

标签: java garbage-collection simulator

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

2 个答案:

答案 0 :(得分:1)

working approach to HW supported GC

  

Cliff Click写道:我们专门为Java做的事情:

     

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

以及

  

读取障碍将在失败时采用快速陷阱,并且默认情况下会在陷阱处理程序中升级为GC模式。这使得错误的CPU能够修复对象引用并继续,而无需等待GC赶上。

当然,整篇文章值得一读。你很可能想看这个video

答案 1 :(得分:0)

  

我很想知道,在这个领域已经做了些什么。

如果你回到20世纪80年代,Symbolics 3600(又名Lisp机器)对标记内存和写入障碍有硬件支持。后来还有关于主题的学术研究。但是,收到的智慧是支持垃圾收集的专用硬件不具成本效益[1](第221页)。

  

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

我猜任何一种方法都可行(给予足够的努力),但两者都存在难以“执行”的问题,并且两者都留下了一个问题,即你发现的任何东西是否可能具有商业可行性。

在您(严肃地)开始讨论这个主题之前,您应该对以前的研究进行彻底的审查。至少掌握下面的书籍,找到并阅读他们引用的硬件gc支持上的论文和文章。

  

有没有可以运行java程序的模拟器。

您正在谈论的硬件模拟器将运行编译到模拟硬件(假设)指令集的程序。您的项目的一部分是实现Java编译器后端以在该指令集中生成代码。

这样的模拟器+编译器可以存在,但可能无法使用它。

参考文献:

[1]“垃圾收集:自动内存管理算法”,作者:R. Jones和R. Lins,Wiley,1996。

[2]“垃圾收集手册:自动记忆管理的艺术”,R。Jones,A。Hoskings和R. Moss。查普曼和霍尔,2011年。