• 本站为了您愉快的极速浏览开启了缓存功能,您的评论不会在第一时间显示并刷新,敬请谅解!若有疑问可在节假日QQ咨询站长!
  • 来到MC服主网必看原创文章集锦,务必要看——本站必看集锦目录
  • MC服主网已经完成备案开始正式运营,欢迎各位服主积极投稿哦~投稿一经采用奖励丰厚!发送你的稿件到吧!
  • 站长与您一起打造全中国最全面的我的世界服务器服主博客!网站内容建设中,欢迎订阅以获取关于MC的最新资讯!
  • 访问本站最好使用Chrome等现代化浏览器以获取最佳浏览效果,本站教程大部分为优质图文教程,欢迎来百度口碑点评我哦!
  • 支持站长?全站广告欢迎点击~需要帮助?QQ联系站长~赞助本站?点我赞助~

[优化教程] 通过修改启动Java脚本来优化客户/服务端 Win&Linux通用[转载]

小白开服 mcfuzhu 2110次浏览 已收录 4个评论 扫描二维码


前言:阅读本篇文章之前可以先阅读本站的

Minecraft 我的世界服务器优化教程 —— 让多带50%的玩家不再是梦

跟本转载文章一样有用哦!


change-java-start-script-to-optimize-minecraft

相信很多人都知道,开服需要通过一个写着一串代码的启动脚本来启动服务器,启动客户端也同理,只是客户端帮你简化了这件事。现在就来教大家如何通过修改启动Java脚本来优化Minecraft客户/服务端。

以下是楼主的启动脚本(以Minecraft官方1.8服务端为例):

1
java -server -d64 -Xmx3550M -Xms3550M -Xss256k -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:+UseFastAccessorMethods -XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=100 -XX:+CMSParallelRemarkEnabled -XX:ParallelGCThreads=20 -jar minecraft_server.1.8.jar nogui

参数说明

-server:一定要作为第一个参数,会使JVM启动速度变慢,但会显著提升JVM性能

-d64:强制使用64位JVM,如果不是64位系统和java请去掉

-Xmx3550m:设置JVM最大堆内存为3550M。

-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。需要注意的是:当这个值被设置的较大(例如>2MB)时将会在很大程度上降低系统的性能。

-Xmn2g:设置年轻代大小为2G。在整个堆内存大小确定的情况下,增大年轻代将会减小年老代,反之亦然。此值关系到JVM垃圾回收,对系统性能影响较大,官方推荐配置为整个堆大小的3/8。

-XX:NewSize=1024m:设置年轻代初始值为1024M。

-XX:MaxNewSize=1024m:设置年轻代最大值为1024M。

-XX:PermSize=256m:设置持久代初始值为256M。

-XX:MaxPermSize=256m:设置持久代最大值为256M。

-XX:NewRatio=4:设置年轻代(包括1个Eden和2个Survivor区)与年老代的比值。表示年轻代比年老代为1:4。

-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的比值。表示2个Survivor区(JVM堆内存年轻代中默认有2个大小相等的Survivor区)与1个Eden区的比值为2:4,即1个Survivor区占整个年轻代大小的1/6。

-XX:MaxTenuringThreshold=7:表示一个对象如果在Survivor区(救助空间)移动了7次还没有被垃圾回收就进入年老代。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代,对于需要大量常驻内存的应用,这样做可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代存活时间,增加对象在年轻代被垃圾回收的概率,减少Full GC的频率,这样做可以在某种程度上提高服务稳定性。

GC(垃圾回收)参数

Sun HotSpot JVM 通常使用的 GC 算法是分代回收。即把对象按生命周期不同分为年轻代和年老代。新的对象会先生成在Young Area,在几次 GC 以后,如果没有收集到,就会逐渐升级到Tenured Area。

Sun JVM 默认的回收器称为 serial collector ,即串行回收,我们也可以使用多线程并发回收来提高效率。需要注意的是,在单核的机器上,使用默认的回收器可能会更好。

-XX:+UseParNewGC:为年轻代对象使用并发回收,会缩短年轻代对象的回收时间

-XX:+UseConcMarkSweepGC:为年老代使用并发回收

-XX:+UseParallelGC:该收集器和 UseConcMarkSweepGC 是互相排斥的,为新生代使用并行清除,年老代使用单线程Mark-Sweep-Compact的垃圾收集器。

补充说明

其中的几个参数LZ忘记收集了必要的资料,没记错应该是减少服务器崩溃的几率。以上参数设置好后可以减少服务器崩溃次数和从底层提高server的效率。

参数跟单核心性能没有关系,其中几个参数是受核心线程的影响 例如-XX:ParallelGCThreads=20 如果是双核4线程,可以写到4-10 就可以了,如果双核双线程值可以写为2-5,只要不是单核服务器,里面大部分参数都有效。

另外,因为服务器和客户端都是基于JVM运行的,所以以上参数适用于游戏客户端,如在启动器参数中设置。具体怎么做根据启动器类型的不同略有出入。LZ使用的是MCLauncherBN里面有参数设置栏,表示很方便。

当然还有server.properties 的可视区块设置和最大玩家数设置,这两个我没有多大感觉。

这些启动参数不仅适用于官方服务器端的启动,同样适用于任何基于JDK6.0以后的服务器端(基本都是)bukkit sipgot 还是官方服务器。


如未注明 , 均为原创丨转载请注明本文来自[优化教程] 通过修改启动Java脚本来优化客户/服务端 Win&Linux通用[转载]! 由于本站属于分享类网站,故依据CC BY-NC-SA 3.0协议,收集了大量网络资源,如原作者对本站转载的资源不满意的话,可以联系我们进行删除处理,同时本站对原创作品享有相关法律权利。 联系邮箱【admin#mcfuzhu.net】【#换成@】
由于本站自建云盘因欠费400余元(泥萌太热情了)导致云盘在今年6月之前上传的数据全部丢失,目前站长已经把收集到的数据全部上传百度云,如仍有缺失请尽快告知!
喜欢 (18)or分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 问一下,我的服务器只有1g 内存 单核 怎么启动能合理点
    Tesla2015-09-21 15:18 回复 未知操作系统 | Firefox 40.0
    • 这种配置不适合商业开服哦
      mcfuzhu2015-09-26 13:51 回复 Windows 7 | Chrome 42.0.2311.152
  2. 你好,请问,CPU 4核8线程 内存32G 怎么设置启动更合理呢?
    mcxiao2015-09-28 10:27 回复 Windows 7 | Chrome 31.0.1650.63
    • 这种配置不用特殊设置一样很快啦 :grin:
      mcfuzhu2015-10-01 12:08 回复 Windows 7 | Chrome 42.0.2311.152
×
订阅图标按钮