
Hello allo!好久不见,我是chino,今天我来讲一讲关于MC的JVM参数优化的几个选项
先不多说,上结果,最佳的部分JVM参数是-Xverify:none -XX:+UseParallelOldGC -XX:MaxInlineSize=420(感谢外国友人derpapottamus对Xverify和ParallelOldGC的测试)
那么下面是实验过程:
使用服务端:carpetmod 1.13.2,一个基于原版,增加了不少功能的服务端(例如实时查看tps等)
使用随机生成的地图测试,使用carpetmod服务端的/tick warp命令获取3600tick内的平均mspt
JVM参数:-server -Xverify:none
测试结果:

12.71mspt
JVM参数:-server -Xverify:none -XX:+UseParallelOldGC
测试结果:

11.18mspt
下面是内联大小的测试部分,经过我们对TIS内服的测试,以下是部分由于大小太大无法被内联的热点方法:
java.util.HashMap::merge (335 bytes)
java.util.HashMap::resize (359 bytes)
java.util.concurrent.ConcurrentHashMap::putVal (362 bytes)
com.google.gson.internal.LinkedTreeMap::rebalance (379 bytes)
com.google.gson.stream.JsonReader::nextNonWhitespace (354 bytes)
java.util.concurrent.ConcurrentHashMap::replaceNode (416 bytes)
java.util.concurrent.ConcurrentHashMap::computeIfAbsent (493 bytes)
sun.nio.cs.UTF_8$Decoder::decode (779 bytes)
先找一个较小的值试试(默认是350)
JVM参数:-server -Xverify:none -XX:MaxInlineSize=420
测试结果:

11.64mspt
再找一个较大的值测试一下,不过较大的size可能导致cpu缓存效率低,起到反效果
JVM参数:-server -Xverify:none -XX:MaxInlineSize=:780
测试结果出来,mspt果然反而不如上边的:

12.20mspt
经过几次测试,基本可以肯定MaxInlineSize设定到420的时候是最低卡顿的
下面来把两个结合参数都加上测试一下:
JVM参数:-Xverify:none -XX:+UseParallelOldGC -XX:MaxInlineSize=420
测试结果:

NOICE
这期的专栏就先写这么多(因为我懒)
Thanks for watching gamers, go try it out!