Java中是否存在一种垃圾回收机制,它可以完全并发地运行,不会引入延迟(停顿)?

7

只是好奇,我听说新的G1GC正在解决那个延迟问题。我不能/不想使用RTSJ。

提前感谢。


也许你应该了解一下Aonix推出的军用级硬实时Java——PERC,它采用确定性垃圾回收技术。更多关于实时Java的信息请参考http://en.wikipedia.org/wiki/Real_time_Java。 - ecle
4个回答

7

您可能对类似Zing JVM这样的东西感兴趣。

Azul系统已经投入了大量精力进行低延迟JVM调优。我相信还有一些有趣的技术论文来解释如何完成此操作。


Azul将Zing JVM作为服务器端JVM的目标。 - ecle

6

上次我检查的时候,即使是CMS也有停顿延迟。 - JohnPristine
嗯,据我所知,所有的JVM GC都有这个问题 - 我甚至不确定是否在理论上可能编写一个没有任何停顿的GC。CMS GC只是有一个更短的停顿时间。 - Matt Ball

2
我认为没有零暂停垃圾收集器。但通常低暂停的收集器,如CMS,可以完成工作。
暂停和暂停减少的问题如下:
- 零暂停(或几乎零暂停)收集方案会显著增加正常程序执行的开销。这在多线程语言(如Java)中尤为明显。 - 使用专用线程或线程来进行垃圾收集的方案可能会因应用程序生成过多垃圾而被淹没。 - 如果应用程序的内存使用模式过于“不平滑”,或者物理和虚拟内存不足,则任何GC方案都会给您带来较差的性能。

3
有一些无需暂停即可进行垃圾回收的GC(例如Azul Systems的用于服务器端的JVM),但是在Oracle JVM本身中并没有这种功能。 - ecle
我在这里发现了一篇有趣的文章,其中评论讨论了暂停/非暂停垃圾回收的问题:http://blogs.forrester.com/john_r_rymer/10-06-21-why_im_worried_about_javas_future - ecle
@eee - 我浏览了一下。但是我不明白他所说的每个JVM限制为2GB的问题。64位的HotSpot JVM已经存在很长时间了... - Stephen C
我跳过了2GB的部分,专注于提到暂停/无暂停GC的评论。无论如何,这篇博客主题本身是在2010年写的。 - ecle

1

您可以在JDK 7中尝试最新的G1垃圾回收。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接