我的世界服务器启动参数生成器
选好内存和服务端类型,直接拿走一份可用的启动脚本。参数基于业界通用的 Aikar’s Flags,并按内存大小自动切换 G1GC 配置。
使用方法
仅 JVM 参数
1. 服务端类型
2. 内存分配
6 GB参考:10 人以内纯生存 4GB;20~40 人 Paper 服 6~8GB;整合包模组服 8~12GB。不要把物理内存全部分配给服务端,至少留 1~2GB 给系统。
3. 脚本选项
关键参数说明
| 参数 | 作用 |
|---|---|
-Xms / -Xmx | 堆内存的初始值与最大值。设成相同数值可以避免运行中反复扩容造成的卡顿。 |
-XX:+UseG1GC | 使用 G1 垃圾回收器,Minecraft 服务端在中等堆大小下的最佳选择。 |
-XX:MaxGCPauseMillis=200 | 期望的单次 GC 最大停顿时间,200ms 是延迟与吞吐的平衡点。 |
-XX:+AlwaysPreTouch | 启动时一次性向系统申请全部内存,启动稍慢但运行更稳。 |
-XX:+DisableExplicitGC | 忽略插件里手写的 System.gc(),避免被劣质插件拖累。 |
--add-modules=jdk.incubator.vector | 开启 SIMD 向量计算模块,Paper 的部分运算会更快。 |
Java 版本对应表
| Minecraft 版本 | 最低 Java 版本 |
|---|---|
| 26.1 及以上 | Java 25 |
| 1.20.5 ~ 1.21.11 | Java 21 |
| 1.18 ~ 1.20.4 | Java 17 |
| 1.17.x | Java 16 |
| 1.16.5 及以下 | Java 8 |
参数之外还能做什么
- 把
view-distance降到 6~8、simulation-distance降到 4~6,是收益最大的一项改动。 - Paper 的
paper-world-defaults.yml里调低despawn-ranges和实体活动范围。 - 安装 Spark,用
/spark profiler start找出真正吃 TPS 的插件或实体。 - 把世界文件放在 SSD 上,区块读写是常见的隐性瓶颈。
常见问题
Aikar’s Flags 到底做了什么?
它是一组针对 Minecraft 服务端调优过的 G1 垃圾回收参数,核心思路是让 GC 更频繁但每次更短,把「几秒钟一次的大卡顿」变成「感知不到的小停顿」。同时通过 -Xms = -Xmx 固定堆大小、AlwaysPreTouch 预分配内存,避免运行中反复申请内存造成的抖动。
内存是不是给得越多越好?
不是。堆越大,一次 GC 要扫描的对象越多,反而可能更卡;而且操作系统还需要内存来缓存区块文件。一般 20 人以内的生存服 6~8GB 足够,模组服 8~12GB,超过 16GB 收益已经很小。务必给系统留 1~2GB。
26.2 需要什么版本的 Java?
26.1 起最低要求 Java 25;1.20.5 ~ 1.21.x 需要 Java 21;1.18 ~ 1.20.4 需要 Java 17。Java 版本过低会直接启动失败并提示 UnsupportedClassVersionError。--add-modules=jdk.incubator.vector 这项能让 Paper 的部分计算走 SIMD,Java 17+ 都可以开。
为什么我的服务器还是卡?
启动参数只能解决 GC 造成的卡顿。真正的大头通常是:实体过多(刷怪塔、掉落物)、区块加载过多(视距太大、传送频繁)、插件卡顿。建议装 Spark 用 /spark profiler 抓一份报告,再决定优化方向。把 view-distance 降到 6~8、simulation-distance 降到 4~6 往往立竿见影。