1 https://www.jianshu.com/u/1c4e0c78a1f7 新一代垃圾回收器ZGC设计与实现 彭成寒
2 https://stackoverflow.com/questions/61923094/getting-allocation-stall-when-enabling-zgc
3 江南白衣 Sina Visitor System
“基础架构部的zgc垃圾收集实测”,jdk 11开始的zgc有多强,文章说太多了。同事用ES7.7 + jdk 14测试了下实际效果。
结果是,关注和调优的重心,都聚焦在万一垃圾回收的速度跟不上分配的速度,发生的allocation stall停顿上,有点像以前操心cms,full gc的stw。
allocation stall不能说是stop the world,它可能是按region 按线程去停的,实际每条线程停顿的时间不一,有的停几毫秒,有的停几百毫秒。
jmx暴露的监控指标只有zgc count和zgc time,没有allocation stall的,只能自己分析gc log, gceasy.io欢迎你。
好了,铺垫完,zgc从jdk 11到14,废弃了一些参数(所以螃蟹吃太早会有点亏),就剩下几个值得调的:
-XX:ConcGCThreads
与应用一起在跑的垃圾回收线程数,默认是1/8总cpu核数。
但在我们的压测场景24核机器三条线程不够用,会出现ap