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集合。