-毕竟话少- 血墨绘你倾城颜
关注数: 0 粉丝数: 34 发帖数: 888 关注贴吧数: 33
在论坛发现一个大佬的帖子(修改vmparams,解决存档卡顿) 原址http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fwww.fossic.org%2Fthread-4362-1-41.html&urlrefer=6ce9a564d2b0ed734337bd92af37e50d 大佬说 一些技术上的解释说明: 0. 远行星号0.91和0.951都可以使用这个vmparams文件。 1. 建议使用jre8,论坛上有具体的方法,使用关键字“java8”搜索即可。jre7(原版自带)玩久了会有概率陷入卡顿无法正常玩,只能重开游戏解决,用jre8长期运行没有这个问题。使用jre8唯一不好的是地图种子没法用了。在意的可以用原始jre开好地图后切换到jre8,不在意地图种子的直接无视。 2. 分析java的垃圾收集日志[-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:jvm.log],可以得知保存卡顿的原因是在存档时,游戏会调用3次FullGC。FullGC会造成jvm的长时间停顿,基本上是java开发的大忌。使用参数[-XX:+DisableExplicitGC]禁止显式调用FullGC后,整个保存过程就如丝般顺滑。 3. 内存大小设置:java运行中分年老代和新生代,年老代保存长期数据,新生代保存临时数据。用visualvm等工具分析后可知,在启用功能MOD不用势力MOD时,年老代(长期数据)长期在300M以下。在0.91启用所有势力MOD(和势力争霸MOD)后,年老代(长期数据)长期在500M左右。所以年老代保留到1G就够了,富裕起见可以保留到2G。而新生代1G有点小,2G~3G比较合适,4G以上的话,新生代的垃圾收集偶尔会有可以感觉到的停顿。综上,内存大小设置[-Xmn2g -Xms4g -Xmx4g],即新生代2G,新生代+年老代4G。 4. jvm默认的年老代垃圾收集是和FullGC一样,会有长时间的停顿,设置[-XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80]启用年老代的并发收集,减少jvm停顿时间。 5. 为了减少年老代垃圾收集启动的频率,设置[-XX:MaxTenuringThreshold=15],尽量让长期数据晋升到年老代。 6. [-Xverify:none]是为了跳过只能使用jre8_275的限制,如果用jre8_275的话可以不设。 7. 远行星号是无法支持jre9的,因为使用了一些java的内部函数,这些函数在java9里不再存在。 欢迎大家评价以上参数的使用感受。
1 下一页