EndyStudio
插件

Minecraft 服务器 RAM 计算器

输入玩家数和插件数,得到附带计算过程的内存估算、对应的 -Xms 和 -Xmx、Aikar 参数,以及可直接用于 Linux、Windows 或 Pterodactyl 的启动脚本。

  • 免费
  • 无需账号
  • 在浏览器中运行

你的服务器

服务端
Minecraft 版本

估算

推荐
5 GB
最低
3 GB
套餐或容器
6 GB
  • 堆内存 (-Xms = -Xmx) 5 GB
  • 留给 Java 的余量 1 GB
  • 最低

基础 2 GB + 20 名玩家 × 75 MB + 25 个插件 × 40 MB = 4.5 GB,向上取整为 5 GB。

    高级

    垃圾回收器

    任何规模都稳妥的选择。Aikar 参数是 Paper 推荐的参数。

    可选,单位 GB。如果你已经有服务器,填进去,参数会控制在这个范围内。

    启动脚本

    保存为 start.sh,放在 jar 旁边,用 ./start.sh 启动。机器需要为这个服务器留出 6 GB 空闲内存,另加系统自身占用。

    Java 25 · -Xmx5G

    我的世界服务器需要多少内存?

    大多数 Paper 服务器用 3 到 8 GB 堆内存就够了:几个朋友一起玩 3 或 4 GB,20 到 30 名玩家加一套常规插件 5 或 6 GB,超过 50 名玩家 8 GB 或更多。你租的套餐要比这个稍大一些,因为 Java 在堆内存之外也要用内存。

    在线玩家 插件 最低 推荐 套餐或容器
    5 10 2 GB 3 GB 4 GB
    10 15 3 GB 4 GB 5 GB
    20 25 3 GB 5 GB 6 GB
    30 40 4 GB 6 GB 7 GB
    50 50 5 GB 8 GB 10 GB
    100 80 8 GB 13 GB 15 GB

    上面的计算器会用你的数字做同样的计算。请把结果当作起点:实际占用取决于玩家分布得多散、视距大小以及每个插件做了什么。

    估算是怎么算出来的

    计算器累加的是堆内存,也就是 Java 分配给 Minecraft 的内存(用 -Xmx 设置的那个):

    • 基础 2 GB:Paper 或 Purpur 加载好世界、没有人在线时的占用。Folia 从 3 GB 起步,因为它是为分散在地图各处的大量玩家设计的。
    • 每名同时在线玩家 75 MB。 每名玩家都会让周围的区块保持加载,连同其中的生物和物品。分散在世界各地的玩家比聚在大厅里的玩家占用更多。
    • 每个插件平均 40 MB。 大多数插件用得少得多,少数插件用得多得多。
    • 重型插件或大地图再加 2 GB: 网页地图(Dynmap、BlueMap)、自定义模型(ItemsAdder、ModelEngine)、大量生物或农场,或视距超过 10。
    • 1.8 到 1.11 按总量的四分之三计算,因为这些版本的区块更轻。

    结果向上取整到整数 GB,并且不低于 3 GB(1.8 到 1.11 为 2 GB)。最低值约为它的三分之二:服务器能运行,但应对繁忙时段、生成新区块或备份的余地很小。计算器最高到 31 GB,因为超过大约 32 GB 时 Java 会关闭压缩对象指针,稍微超过一点反而可用内存更少。

    这些数字是有意往高估的。内存不够会让服务器先卡顿再崩溃,而稍微多一点只是每个月多花一点钱。

    给 Java 留出余量:堆内存与套餐

    -Xmx 只限制堆内存。Java 还要用内存存放每个插件的类、它的线程、编译后的代码、网络缓冲区以及垃圾回收器自己的记录。计算器为此预留 1 GB 或堆内存的 15 %,取两者中较大的值,这和 Paper 的建议一致:-Xmx 要比你拥有的内存少 1000 到 1500 MB。实际来说:

    • 租用套餐: 按计算器显示的套餐大小来选,而不是堆内存。8 GB 堆内存需要 10 GB 的套餐。
    • 已经有套餐: 把它填进你的套餐内存,参数会按能装进套餐的大小设置。8 GB 的套餐留出 6.5 GB 堆内存。
    • Pterodactyl、Docker 和大多数主机限制的是整个容器。如果 Java 超出限制,服务器会被当场杀掉,控制台里往往没有任何报错。
    • 你自己的电脑或 VPS: 要给操作系统和其他运行中的程序留出内存。

    为什么 -Xms 等于 -Xmx

    Aikar 参数把 -Xms 和 -Xmx 设为相同的值,并加上 -XX:+AlwaysPreTouch,在服务器启动时就预留整个堆内存。G1 在堆内存不扩大也不缩小时工作得更好,而且如果内存实际上不存在,你在启动时就会发现。一个副作用是:面板的内存图从第一分钟起就显示整个堆内存都在使用。这是正常的。

    Aikar 参数与 ZGC

    Aikar 参数针对 Minecraft 使用内存的方式调优 G1 垃圾回收器:大量只存活一个 tick 的对象,以及必须保持很短的停顿。Paper 推荐使用它们,适合任何规模的服务器。堆内存超过 12 GB 时,计算器会改用 Aikar 针对大堆内存的取值:G1NewSizePercent=40、G1MaxNewSizePercent=50、G1HeapRegionSize=16M、G1ReservePercent=15 和 InitiatingHeapOccupancyPercent=20。

    ZGC 是另一种垃圾回收器,几乎所有工作都在服务器继续运行时完成,所以停顿能保持在一毫秒以内。代价是它占用更多 CPU,只有在有空闲核心的大堆内存(16 GB 及以上)上才有意义。请使用分代版本:在 Java 21 上需要 -XX:+ZGenerational,从 Java 23 开始它是默认模式,所以计算器不会加上这个参数。如果拿不准,就继续用 G1。

    用哪个 Java 版本

    Minecraft Java
    26.1 及以上 25
    1.20 – 1.21.11 21
    1.17 – 1.19.4 17
    1.16.5 16
    1.12 – 1.16.4 11
    1.8 – 1.11 8

    这是 Paper 文档中的表格。用 java -version 查看你装的是哪个版本。如果装了多个,脚本会启动 java 命令指向的那个。

    启动服务器

    1. 填写玩家数、插件数、服务端和版本,如果已经有套餐,再填上套餐内存。
    2. 选择一个启动脚本:
      • start.sh 用于 Linux 和 macOS。保存在 jar 旁边,先执行一次 chmod +x start.sh,然后运行 ./start.sh。
      • start.bat 用于 Windows。保存在 jar 旁边,双击运行。末尾的 pause 会在服务器停止时保持窗口打开,方便你看报错。
      • Pterodactyl 给出启动命令,其中的 {{SERVER_JARFILE}} 由面板填入 jar 文件名。然后在面板中把服务器内存设为不低于套餐大小。
      • 仅参数适用于有 JVM 参数栏的主机。如果主机自己设置内存,请删掉 -Xms 和 -Xmx。
    3. 点击复制。复制分享链接会把你的设置保存在链接里。

    什么时候加内存也没用

    卡顿通常来自 CPU:普通服务器的大部分工作都在一个主线程上完成,所以更快的单核比更多的内存更有用。升级之前,先运行 /spark health 查看内存和 TPS,再用 /spark profiler 看看时间花在了哪里。从 1.21 起 Paper 自带 spark。调低 view-distance 和 simulation-distance 能同时节省内存和 CPU;用 Chunky 这类插件预生成世界,可以避免玩家游玩时生成新区块造成的卡顿峰值。

    常见问题

    10 人或 20 人需要多少内存?

    在 Paper 上配一套常规插件,10 名玩家加 15 个插件大约需要 4 GB 堆内存,20 名玩家加 25 个插件需要 5 GB。Java 在此之外还需要大约 1 GB,所以请选 5 GB 或 6 GB 的套餐。网页地图这类重型插件大约再加 2 GB。

    内存越多服务器越快吗?

    只在内存不够时才是这样。超过够用的量之后,多出来的内存只会闲着,卡顿来自 CPU、插件或视距。在花钱加内存之前,先用 /spark health 和 /spark profiler 检查一下。

    为什么 -Xms 和 -Xmx 要设成一样?

    Aikar 参数通过 AlwaysPreTouch 在启动时就预留整个堆内存,这样 Java 在玩家游玩期间不需要扩大或缩小它。而且如果机器没有这么多内存,你在启动时就会发现,而不是在某个热闹的晚上。

    堆内存之外应该留多少内存?

    至少 1 GB,大型服务器则为堆内存的 15 %。Java 还需要内存来存放插件的类、线程、网络缓冲区和垃圾回收器。在 Pterodactyl 或 Docker 上,如果整个进程超过容器的限制,服务器会被直接杀掉,没有任何警告。

    应该用 G1 还是 ZGC?

    G1 加 Aikar 参数在任何规模下都是稳妥的选择,也是 Paper 推荐的。分代 ZGC(Java 21 及以上)能把停顿控制在一毫秒以内,但会占用更多 CPU 和内存,所以只有在 16 GB 及以上的堆内存、并且有空闲核心时才值得一试。

    我的服务器需要哪个 Java 版本?

    Minecraft 26.1 及以上需要 Java 25。Paper 推荐:1.20 到 1.21.11 用 Java 21,1.17 到 1.19.4 用 Java 17,1.16.5 用 Java 16,1.12 到 1.16.4 用 Java 11,1.8 到 1.11 用 Java 8。