All the GC's I know except Azul are somewhat concurrent, but have at least some small stop-the-world component. Why aren't there more GC's like Azul?
除了Azul之外,我所知道的所有GC都是并发的,但至少有一些小型的“停止-世界”组件。为什么没有更多的GC像Azul?
Did Azul patent their technology to the extent that it's not possible to do?
难道Azul对他们的技术申请了专利,而这是不可能的吗?
Or do the read/write barriers needed for pauseless operation incur so much overhead that they are impractical for most workloads?
或者是暂停操作所需的读/写障碍会产生如此大的开销,以至于对大多数工作负载来说它们是不切实际的吗?
2 个解决方案
#1
8
Based on the Azul whitepaper on C4, it looks like C4 is a very new technology, an implementation of an algorithm published in 2005, first on custom hardware and then ported specifically to Linux on x86, and the JVM implementation sits very close to the kernel VM system.
基于C4上的Azul白皮书,看起来C4是一项非常新的技术,它是2005年发布的一种算法的实现,首先在定制的硬件上,然后在x86上专门移植到Linux上,并且JVM实现非常接近内核VM系统。
Since OpenJDK/HotSpot is widely used on a number of platforms and in major production workloads, it tends to move more slowly when adopting major innovations in algorithms (the switch to TimSort is a good example). The Java 8 versions introduced the first major overhaul of the GC system in years (with the elimination of the PermGen), and improvements such as C4, if practical to be ported cross-platform or abstracted without significant downside to JVM bookkeeping internals, are likely to be tried out and then adopted into OpenJDK/HotSpot in upcoming versions.
由于OpenJDK/HotSpot在许多平台和主要的生产工作负载中都得到了广泛的应用,所以当采用算法方面的重大创新时,OpenJDK/HotSpot会走得更慢(切换到TimSort就是一个很好的例子)。Java 8版本介绍多年来第一GC系统的大修(消除PermGen),和改进如C4,如果实际的跨平台移植或抽象JVM簿记内部没有明显的缺点,可能会尝试,然后采用到OpenJDK /热点在即将到来的版本。
#2
7
Implementing garbage collectors is quite tricky and there are not many applications that truly justify a pauseless collector. As you mentioned, read/write barriers to impose a pretty high overhead that you only want to pay if you absolutely need low latency and are willing to take a hit on throughput.
实现垃圾收集器是相当棘手的,并且没有多少应用程序真正证明一个无用的收集器是正确的。正如您所提到的,读/写障碍会带来一个非常高的开销,如果您绝对需要低延迟,并且愿意在吞吐量上受到影响,那么您只需要支付。
That said, a low-pause GC called Shenandoah is being implemented in this JEP: http://openjdk.java.net/jeps/189 . As a Java programmer, I'm hopeful that it will be available in a few years.
也就是说,一个名为Shenandoah的低暂停GC正在这个JEP中实现:http://openjdk.java.net/jeps/189。作为一名Java程序员,我希望它能在几年后问世。
#1
8
Based on the Azul whitepaper on C4, it looks like C4 is a very new technology, an implementation of an algorithm published in 2005, first on custom hardware and then ported specifically to Linux on x86, and the JVM implementation sits very close to the kernel VM system.
基于C4上的Azul白皮书,看起来C4是一项非常新的技术,它是2005年发布的一种算法的实现,首先在定制的硬件上,然后在x86上专门移植到Linux上,并且JVM实现非常接近内核VM系统。
Since OpenJDK/HotSpot is widely used on a number of platforms and in major production workloads, it tends to move more slowly when adopting major innovations in algorithms (the switch to TimSort is a good example). The Java 8 versions introduced the first major overhaul of the GC system in years (with the elimination of the PermGen), and improvements such as C4, if practical to be ported cross-platform or abstracted without significant downside to JVM bookkeeping internals, are likely to be tried out and then adopted into OpenJDK/HotSpot in upcoming versions.
由于OpenJDK/HotSpot在许多平台和主要的生产工作负载中都得到了广泛的应用,所以当采用算法方面的重大创新时,OpenJDK/HotSpot会走得更慢(切换到TimSort就是一个很好的例子)。Java 8版本介绍多年来第一GC系统的大修(消除PermGen),和改进如C4,如果实际的跨平台移植或抽象JVM簿记内部没有明显的缺点,可能会尝试,然后采用到OpenJDK /热点在即将到来的版本。
#2
7
Implementing garbage collectors is quite tricky and there are not many applications that truly justify a pauseless collector. As you mentioned, read/write barriers to impose a pretty high overhead that you only want to pay if you absolutely need low latency and are willing to take a hit on throughput.
实现垃圾收集器是相当棘手的,并且没有多少应用程序真正证明一个无用的收集器是正确的。正如您所提到的,读/写障碍会带来一个非常高的开销,如果您绝对需要低延迟,并且愿意在吞吐量上受到影响,那么您只需要支付。
That said, a low-pause GC called Shenandoah is being implemented in this JEP: http://openjdk.java.net/jeps/189 . As a Java programmer, I'm hopeful that it will be available in a few years.
也就是说,一个名为Shenandoah的低暂停GC正在这个JEP中实现:http://openjdk.java.net/jeps/189。作为一名Java程序员,我希望它能在几年后问世。