快捷导航
查看: 668|回复: 0

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

[复制链接]

213

主题

318

回帖

7994

积分

超级版主

Rank: 8Rank: 8

经验
7994 EP
金粒
7410 粒
绿宝石
9 块
爱心
20 点
发表于 2023-1-28 15:34:55 | 显示全部楼层 |阅读模式 IP:辽宁大连
本帖最后由 GreyD 于 2023-1-28 16:01 编辑

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



参数说明

-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。在整个堆内存大小确定的情况下,增大年轻代将会减小年老代,反之亦然。此值关系到VM垃圾回收,对系统性能影响较大,官方推荐配置为整个堆大小的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。
SunJVM默认的回收器称为serial collector,即串行回收,我们也可以使用多线程并发回收来提高效率。需要注意的是,在单核的机器上,使用默认的回收器可能会更好。
-XX:+UseParNewGC:为年轻代对象使用并发回收,会缩短年轻代对象的回收时间
-XX:+UseConcMarkSweepGC:为年老代使用并发回收
-XX:+UseParallelGC:该收集器和UseConcMarkSweepGC是互相排斥的,为新生代使用并行清除,年老代使用单线程Mark-Sweep-Compact的垃圾收集器。


补充说明


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

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

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

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

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


本帖转自于MC服主网


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 手机动态码快速登录

x
楼主 2023-1-28 15:34:55 回复 收起回复

回复 论坛版权

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 手机动态码快速登录

本版积分规则



官方

新浪微博 腾讯微博 微信公众号 投稿规则 版权声明 捐助我们

官方QQ①群: 291907844 (点击加群)
官方QQ②群: 421312192
官方QQ③群: 528726532

介绍

我的世界(Minecraft)小僵尸论坛
收录了来自各地的我的世界(MC)爱好者们的各种资源

须知: 切勿滥用举报,任何与举报相关的信息必须属实!

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

QQ|Archiver|手机版|小黑屋|Minecraft(我的世界)小僵尸论坛 |网站地图

GMT+8, 2025-4-10 10:50 , Processed in 0.071700 second(s), 49 queries .

快速回复 返回顶部 返回列表