Java中是否存在GC并未引入延迟(停止世界)或者同时运行100%?

只是好奇。 我听说过有关新的G1GC解决延迟问题的事情。 我不能/不想使用RTSJ。

提前致谢

我认为没有任何零暂停垃圾收集器。 但一般来说,像CMS这样的低暂停收集器就可以完成这项工作。

暂停和暂停减少的问题如下:

  • 零暂停(或几乎零暂停)收集机制显着增加了正常程序执行的开销。 对于像Java这样的multithreading语言尤其如此。

  • 如果应用程序生成太多垃圾,使用专用线程或线程进行垃圾收集的方案可能会被淹没。

  • 如果应用程序的内存使用模式过于“笨拙”和/或您没有足够的物理和虚拟内存,那么任何GC方案都会给您带来糟糕的性能。

您可能对Zing JVM之类的东西感兴趣。

Azul系统在低延迟JVM调优方面投入了大量精力。 我相信还有一些有趣的技术论文可以解释这是如何完成的。

听起来你正在寻找CMS GC – 并发标记扫描 。

在此处输入图像描述

(来源: https ://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf,p.12)


2015年12月更新:您可能对Azul的“暂停”GC感兴趣。 有关更多信息,请参阅Azul的“暂停”垃圾收集器的说明。

您可以在JDK 7中尝试最新的G1 Garbage集合。