只是好奇。我听说新的 G1GC 解决了这个延迟问题。我不能/不想使用 RTSJ。
提前致谢
您可能对Zing JVM之类的东西感兴趣。
Azul 系统在低延迟 JVM 调优方面投入了大量精力。我相信也有一些有趣的技术论文解释了这是如何完成的。
听起来您正在寻找CMS GC — 并发标记扫描。
(来源:JavaHotSpot™ 虚拟机中的内存管理,第12 页)
2015 年 12 月更新:您可能对 Azul 的“无暂停”GC 感兴趣。有关更多信息,请参阅Azul 的“无暂停”垃圾收集器的说明。
我不认为有任何零暂停垃圾收集器。但一般来说,像 CMS 这样的低暂停收集器会完成这项工作。
停顿和停顿减少的问题如下:
零暂停(或几乎零暂停)收集机制显着增加了正常程序执行的开销。对于像 Java 这样的多线程语言尤其如此。
如果应用程序生成太多垃圾,使用专用线程或线程进行垃圾收集的方案可能会被淹没。
如果应用程序的内存使用模式过于“笨拙”和/或您没有足够的物理和虚拟内存,那么任何 GC 方案都会给您带来较差的性能。
您可以尝试 JDK 7 中最新的 G1 垃圾收集。