前几天有某位服务器内的大佬玩家推荐,才知道有ZGC这东西,
因为我对java开发及GC的机制一知半解,就不献丑探讨理论上的细节,
纯粹分享资料以及实际应用在麦块服务器上的效果。
首先关于zgc的效能部份可以参考这份文件
http://cr.openjdk.java.net/~pliden/slides/ZGC-FOSDEM-2018.pdf
从文件的第6页得知ZGC的停顿时间可以压在10ms下,
而在第12页中与G1GC比较的图表,更能表现出他的效率之快。
(怕有版权问题就不截图了,G1GC约在200~800ms之间浮动,资料越大停顿越久。)
要启动ZGC的方法很简单,只要是在Linux的环境且JAVA的版本在11以上,
然后于启动服务器的参数中加入
-XX:+UnlockExperimentalVMOptions -XX:+UseZGC
就可以运作了。
更多关于ZGC的资料可以参考OpenJDK的Wiki
https://wiki.openjdk.java.net/display/zgc/Main
最后这是我几周前用G1GC的Timing,
https://timings.aikar.co/?id=489d8729e6db4ac0b9e1a4b9fc9f3337
https://i.imgur.com/6JUK5DV.png
启动参数
-server -Xms15G -Xmx15G -XX:+UseG1GC -XX:ParallelGCThreads=12
-XX:+UseLargePages
然后是换成ZGC后的TIming
https://timings.aikar.co/?id=20788f4069cb4ac09785bc6e5c2d6d04
https://i.imgur.com/1dvw8sB.png
启动参数
-server -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xmx15G
虽然前后有升级过PaperMC的版本,且Timing没有蒐集GC回收时间的细节,
不算严谨的实验,但整体而言TPS还是稳定了不少。
以上,把这好物推荐给大家~