ZGC初体验

本文对比了JDK8的G1垃圾收集器与JDK11的ZGC在不同内存设置下的性能表现。在2G内存下,ZGC的平均收集时间为1.41毫秒,而G1为5.15毫秒;在8G内存下,ZGC保持在1.37毫秒。尽管ZGC在大内存场景下表现优秀,但在8G内存测试中,程序实际使用内存未达到预期。ZGC在减少垃圾收集时间方面明显优于G1,且两者CPU利用率相近。
摘要由CSDN通过智能技术生成


JDK11发布了,ZGC的相关描述很诱人,体验了一下。
一共测试了三次,分别使用JDK8和JDK11。使用JMeter做压力测试,比较G1和ZGC的差别。

JDK8下的G1

JAVA_OPTS=" -Xms2g -Xmx2g -Xmn1400m -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=60 "
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=50 -XX:+PrintGCDetails -verbose:gc   -Xloggc:./g1-gc.log"

大约测试了半个小时,使用visualvm_142查看CPU和内存使用情况:
在这里插入图片描述

GC情况:
在这里插入图片描述

可见,G1的性能还是不错的。
一共收集467次。一共耗时2405毫秒,平均每次5.15毫秒。

JDK11下的ZGC(2G内存)

JAVA_OPTS=" -server -Xms2g -Xmx2g -XX:ConcGCThreads=4 -XX:+UnlockExperimentalVMOptions -XX:+UseZGC "
JAVA_OPTS="$JAVA_OPTS    -Xlog:gc*:file=gis-gc.txt "

同样使用2G内存,测试半小时。

visualvm_142不支持ZGC,所以,使用JDK11自带的jconsole查看:
在这里插入图片描述

一共972次收集,耗时1373毫秒。平均每次1.41毫秒。

JDK11的ZGC(8G内存)

据Oracle的宣传,ZGC特别适合大内存的情况。
于是,增大内存配置,继续测试半小时。

JAVA_OPTS=" -server -Xms8g -Xmx8g -XX:ConcGCThreads=4 -XX:+UnlockExperimentalVMOptions -XX:+UseZGC "
JAVA_OPTS="$JAVA_OPTS    -Xlog:gc*:file=gis-gc.txt "

jconsole输出如下:
在这里插入图片描述

813次收集,耗时1113毫秒。平均每次1.37毫秒。

测试比较失败,因为虽然配置了8G内存,但是,实际使用的内存很少超过1.5G。
以后试试怎么提升程序使用的内存量。

可以看出来,ZGC的性能相比G1还是提高很多的
JDK8下的G1和JDK11下的ZGC,CPU利用率基本没差别。

下面贴一段ZGC的收集日志:

[1131.279s][info][gc,start    ] GC(502) Garbage Collection (Proactive)
[1131.280s][info][gc,phases   ] GC(502) Pause Mark Start 0.719ms
[1131.314s][info][gc,phases   ] GC(502) Concurrent Mark 34.151ms
[1131.315s][info][gc,phases   ] GC(502) Pause Mark End 0.066ms
[1131.315s][info][gc,phases   ] GC(502) Concurrent Process Non-Strong References 0.564ms
[1131.315s][info][gc,phases   ] GC(502) Concurrent Reset Relocation Set 0.008ms
[1131.315s][info][gc,phases   ] GC(502) Concurrent Destroy Detached Pages 0.001ms
[1131.317s][info][gc,phases   ] GC(502) Concurrent Select Relocation Set 1.367ms
[1131.317s][info][gc,phases   ] GC(502) Concurrent Prepare Relocation Set 0.030ms
[1131.317s][info][gc,phases   ] GC(502) Pause Relocate Start 0.565ms
[1131.319s][info][gc,phases   ] GC(502) Concurrent Relocate 1.343ms
[1131.319s][info][gc,load     ] GC(502) Load: 6.96/7.15/7.00
[1131.319s][info][gc,mmu      ] GC(502) MMU: 2ms/25.6%, 5ms/70.2%, 10ms/85.1%, 20ms/92.1%, 50ms/95.8%, 100ms/97.5%
[1131.319s][info][gc,marking  ] GC(502) Mark: 4 stripe(s), 3 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s) 
[1131.319s][info][gc,reloc    ] GC(502) Relocation: Successful, 7M relocated
[1131.319s][info][gc,nmethod  ] GC(502) NMethods: 5130 registered, 1910 unregistered
[1131.319s][info][gc,metaspace] GC(502) Metaspace: 59M used, 59M capacity, 59M committed, 60M reserved
[1131.319s][info][gc,ref      ] GC(502) Soft: 6431 encountered, 0 discovered, 0 enqueued
[1131.319s][info][gc,ref      ] GC(502) Weak: 4778 encountered, 538 discovered, 0 enqueued
[1131.319s][info][gc,ref      ] GC(502) Final: 32 encountered, 7 discovered, 0 enqueued
[1131.319s][info][gc,ref      ] GC(502) Phantom: 306 encountered, 238 discovered, 0 enqueued
[1131.319s][info][gc,heap     ] GC(502)                Mark Start          Mark End        Relocate Start      Relocate End           Hig
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值