新一代垃圾回收器ZGC(Z Garbage Collector)

425 阅读1分钟

JVM回收最大的一个问题就是STW(STOP THE WORD)

image.png

JVM中的垃圾回收器都存在STW的问题,只不过在于如果缩短STW的时间

目前为止所了解到的垃圾回收器大概有以下这些

image (1).png

ZGC(Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括:

  • 停顿时间不超过10ms,目前一般线上环境运行良好的JAVA应用的Minor GC一般在10ms以内,Full GC/Major GC/Mixed GC一般都需要100ms以上,G1可调节,但是如果过于少的话,反而会适得其反, JDK16中不超过1ms;

  • 支持8MB~4TB级别的堆 ,JDK15后已经可以支持16TB。

  • 它的停顿时间不会随着堆的增大而增长

  • 最糟糕的情况下吞吐量会降低15%:这种情况可以通过扩容解决

另外,ZGC还有一个最大的优点:它的停顿时间不会随着堆的增大而增大!!! ,也就是说几十G堆的停顿时间是10ms以下,几百G甚至上T的堆的停顿时间也是在10ms以下

image (2).png

如下图所示,是ZGC和Parallel以及G1的压测对比结果(CMS在JDK9中已经被标记deprecated,更高版本中已经被彻底移除,所以不在对比范围内)。我们可以明显的看到,停顿时间方面,ZGC是100%不超过10ms的,简直是秒天秒地般的存在.

image (3).png