JVM回收最大的一个问题就是STW(STOP THE WORD)
JVM中的垃圾回收器都存在STW的问题,只不过在于如果缩短STW的时间
目前为止所了解到的垃圾回收器大概有以下这些
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以下
如下图所示,是ZGC和Parallel以及G1的压测对比结果(CMS在JDK9中已经被标记deprecated,更高版本中已经被彻底移除,所以不在对比范围内)。我们可以明显的看到,停顿时间方面,ZGC是100%不超过10ms的,简直是秒天秒地般的存在.