Nic*_*uso 28 hardware garbage-collection functional-programming
我正在思考函数式语言可以更直接地绑定到他们的硬件的方式,并且想知道垃圾收集的任何硬件实现.
这会显着加快速度,因为硬件本身会隐式处理所有集合,而不是某些环境的运行时.
这是LISP机器做的吗?有没有进一步研究这个想法?这个域名是否具体?
思考?异议?讨论.
run*_*1ME 14
由于Generational Collection,我不得不说跟踪和复制不是 GC的巨大瓶颈.
有用的是硬件辅助的READ障碍,它们在进行堆栈扫描和标记堆时不需要"停止世界"暂停.
Azul Systems已经做到了这一点:http: //www.azulsystems.com/products/compute_appliance.htm他们在JavaOne上介绍了他们的硬件修改如何允许完全无间断的GC.
另一项改进是硬件辅助写入障碍,用于跟踪记忆集.
对于G1或Garbage First,通常只扫描一个分区,并为跨分区指针保留一个记忆集列表,从而减少它们必须扫描的堆的数量.
问题是这意味着任何时候mutator('真实程序'的花哨字)设置一个指针,它也必须在适当的重新设置的集合中放入一个条目.所以即使你不是GCing,你也有(小)开销.如果可以减少这种情况,则可以减少GCing所需的暂停时间和整体程序性能.
一个明显的解决方案是使用大于可用 RAM 的内存指针,例如,32 位机器上的 34 位指针。或者,当您只有 16MB 的 RAM (2^24) 时,使用 32 位机器的最高 8 位。苏黎世联邦理工学院的Oberon 机器使用这种方案取得了很大成功,直到 RAM 变得太便宜。那是在 1994 年左右,所以这个想法已经很老了。
这为您提供了一些可以存储对象状态的位(例如“这是一个新对象”和“我刚刚触摸了这个对象”)。在执行 GC 时,更喜欢带有“这是新的”的对象,避免“刚刚接触”。
这实际上可能看到的复兴,因为没有人有2 ^ 64字节的RAM(= 2 ^ 67个比特;大约有10 ^ 80〜2 ^ 240在宇宙中的原子,所以它可能无法以具有多RAM以往)。这意味着如果VM 可以告诉操作系统如何映射内存,您可以在今天的机器中使用一些位。
归档时间: |
|
查看次数: |
4257 次 |
最近记录: |