为什么没有更多无暂停的GC
2022-09-02 21:32:46
除了Azul之外,我所知道的所有GC都有些并发,但至少有一些小的停止世界组件。为什么没有更多像Azul这样的GC?
Azul是否为他们的技术申请了专利,以至于无法做到?
还是无暂停操作所需的读/写障碍会产生如此多的开销,以至于它们对于大多数工作负载来说是不切实际的?
除了Azul之外,我所知道的所有GC都有些并发,但至少有一些小的停止世界组件。为什么没有更多像Azul这样的GC?
Azul是否为他们的技术申请了专利,以至于无法做到?
还是无暂停操作所需的读/写障碍会产生如此多的开销,以至于它们对于大多数工作负载来说是不切实际的?
根据Azul关于C4的白皮书,看起来C4是一种非常新的技术,是2005年发布的算法的实现,首先在自定义硬件上,然后在x86上专门移植到Linux上,JVM实现非常接近内核VM系统。
由于OpenJDK / HotSpot在许多平台和主要生产工作负载中被广泛使用,因此在采用算法的重大创新时,它往往会移动得更慢(切换到TimSort就是一个很好的例子)。Java 8版本引入了多年来GC系统的首次重大改革(随着PermGen的淘汰),并且诸如C4之类的改进,如果可以跨平台移植或抽象化而不会对JVM簿记内部进行重大负面影响,则可能会被试用,然后在即将推出的版本中采用到OpenJDK / HotSpot中。
实现垃圾回收器非常棘手,并且没有多少应用程序真正证明无暂停收集器是合理的。正如你所提到的,读/写障碍会带来相当高的开销,只有在你绝对需要低延迟并愿意对吞吐量造成打击时,你才想支付这些开销。
也就是说,一个名为Shenandoah的低暂停GC正在这个JEP中实现:http://openjdk.java.net/jeps/189。作为一名Java程序员,我希望它将在几年内可用。