我正在思考函数式语言可以更直接地绑定到他们的硬件的方式,并且想知道垃圾收集的任何硬件实现.
这会显着加快速度,因为硬件本身会隐式处理所有集合,而不是某些环境的运行时.
这是LISP机器做的吗?有没有进一步研究这个想法?这个域名是否具体?
思考?异议?讨论.
由于Generational Collection,我不得不说跟踪和复制不是 GC的巨大瓶颈.
有用的是硬件辅助的READ障碍,它们在进行堆栈扫描和标记堆时不需要"停止世界"暂停.
Azul Systems已经做到了这一点:http: //www.azulsystems.com/products/compute_appliance.htm他们在JavaOne上介绍了他们的硬件修改如何允许完全无间断的GC.
另一项改进是硬件辅助写入障碍,用于跟踪记忆集.
对于G1或Garbage First,通常只扫描一个分区,并为跨分区指针保留一个记忆集列表,从而减少它们必须扫描的堆的数量.
问题是这意味着任何时候mutator('真实程序'的花哨字)设置一个指针,它也必须在适当的重新设置的集合中放入一个条目.所以即使你不是GCing,你也有(小)开销.如果可以减少这种情况,则可以减少GCing所需的暂停时间和整体程序性能.
是.查看这两篇论文的相关工作部分:
https://research.microsoft.com/en-us/um/people/simonpj/papers/parallel-gc/index.htm http://www.filpizlo.com/papers/pizlo-ismm2007-stopless.pdf
或者在这一个:
http://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon12StallFree.pdf