Сколько ОЗУ нужно серверу Minecraft?
Большинству серверов на Paper хватает от 3 до 8 ГБ heap: 3–4 ГБ для компании друзей, 5–6 ГБ для 20–30 игроков с обычным набором плагинов и 8 ГБ или больше, если игроков больше 50. Тариф, который вы арендуете, должен быть немного больше, потому что Java использует память и вне heap.
| Игроков онлайн | Плагинов | Минимум | Рекомендуется | Тариф или контейнер |
|---|---|---|---|---|
| 5 | 10 | 2 ГБ | 3 ГБ | 4 ГБ |
| 10 | 15 | 3 ГБ | 4 ГБ | 5 ГБ |
| 20 | 25 | 3 ГБ | 5 ГБ | 6 ГБ |
| 30 | 40 | 4 ГБ | 6 ГБ | 7 ГБ |
| 50 | 50 | 5 ГБ | 8 ГБ | 10 ГБ |
| 100 | 80 | 8 ГБ | 13 ГБ | 15 ГБ |
Калькулятор выше делает тот же расчёт с вашими числами. Считайте результат отправной точкой: реальное потребление зависит от того, насколько разбросаны игроки, от дальности прорисовки и от того, что делает каждый плагин.
Как считается оценка
Калькулятор складывает heap — память, которую Java отдаёт Minecraft (та, что задаётся через -Xmx):
- 2 ГБ базы для Paper или Purpur с загруженными мирами и без игроков онлайн. Folia начинает с 3 ГБ, потому что рассчитана на много игроков, разбросанных по карте.
- 75 МБ на каждого игрока, который онлайн одновременно. Каждый игрок держит загруженными чанки вокруг себя вместе с мобами и предметами в них. Игроки, разбросанные по миру, стоят дороже, чем игроки, стоящие вместе в лобби.
- 40 МБ на плагин в среднем. Большинство плагинов используют гораздо меньше, а некоторые — гораздо больше.
- Ещё 2 ГБ на тяжёлые плагины или большой мир: веб-карты (Dynmap, BlueMap), кастомные модели (ItemsAdder, ModelEngine), много мобов или ферм или дальность прорисовки больше 10.
- Три четверти от суммы на 1.8 – 1.11, где чанки легче.
Результат округляется вверх до целых ГБ и никогда не опускается ниже 3 ГБ (2 ГБ на 1.8 – 1.11). Минимум — примерно две трети от него: сервер работает, но почти без запаса на пиковые моменты, генерацию новых чанков и бэкапы. Калькулятор останавливается на 31 ГБ, потому что примерно выше 32 ГБ Java отключает сжатые указатели на объекты, и если немного превысить этот порог, полезной памяти станет меньше, а не больше.
Эти числа намеренно завышены. Нехватка памяти заставляет сервер подтормаживать, а потом падать, а небольшой избыток лишь немного дороже обходится каждый месяц.
Оставьте место для Java: heap и тариф
-Xmx ограничивает только heap. Java также использует память под классы каждого плагина, свои потоки, компилируемый код, сетевые буферы и служебные данные сборщика мусора. Калькулятор оставляет на это 1 ГБ или 15 % от heap, смотря что больше, — в духе совета Paper давать -Xmx на 1000–1500 МБ меньше доступной памяти. На практике:
- Арендуете тариф: ориентируйтесь на размер тарифа, который показывает калькулятор, а не на heap. Heap на 8 ГБ требует тарифа на 10 ГБ.
- Тариф уже есть: укажите его в поле ОЗУ вашего тарифа, и флаги будут рассчитаны так, чтобы вписаться в него. Тариф на 8 ГБ оставляет heap на 6,5 ГБ.
- Pterodactyl, Docker и большинство хостингов ограничивают весь контейнер. Если Java выйдет за предел, сервер будет убит на месте, часто без единой ошибки в консоли.
- Свой ПК или VPS: оставьте память операционной системе и всему остальному, что там работает.
Почему -Xms равен -Xmx
Флаги Aikar дают -Xms и -Xmx одно и то же значение и добавляют -XX:+AlwaysPreTouch, который резервирует весь heap при запуске сервера. G1 лучше работает с heap, который никогда не растёт и не сжимается, а если памяти на самом деле нет, вы узнаете об этом при запуске. Побочный эффект: график памяти в панели с первой минуты показывает весь heap занятым. Так и должно быть.
Флаги Aikar и ZGC
Флаги Aikar настраивают сборщик мусора G1 под то, как Minecraft использует память: огромное количество объектов, живущих один тик, и паузы, которые должны оставаться короткими. Paper их рекомендует, и они подходят серверам любого размера. При heap больше 12 ГБ калькулятор переключается на значения Aikar для большого heap: G1NewSizePercent=40, G1MaxNewSizePercent=50, G1HeapRegionSize=16M, G1ReservePercent=15 и InitiatingHeapOccupancyPercent=20.
ZGC — другой сборщик, который делает почти всю работу, пока сервер продолжает работать, поэтому паузы остаются короче миллисекунды. Взамен он расходует больше CPU и имеет смысл только на большом heap (от 16 ГБ) при свободных ядрах. Используйте поколенческую версию: на 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.
Запуск сервера
- Заполните игроков, плагины, ядро и версию, а также ОЗУ тарифа, если он у вас уже есть.
- Выберите Скрипт запуска:
- start.sh для Linux и macOS. Сохраните его рядом с jar-файлом, один раз выполните
chmod +x start.sh, а затем./start.sh. - start.bat для Windows. Сохраните его рядом с jar-файлом и запустите двойным щелчком.
pauseв конце оставляет окно открытым, если сервер остановится, чтобы вы могли прочитать ошибку. - Pterodactyl выдаёт команду запуска с
{{SERVER_JARFILE}}, чтобы панель сама подставила jar-файл. Затем задайте серверу в панели память не меньше размера тарифа. - Только флаги — для хостингов с полем аргументов JVM. Если хостинг сам задаёт память, уберите
-Xmsи-Xmx.
- start.sh для Linux и macOS. Сохраните его рядом с jar-файлом, один раз выполните
- Нажмите Копировать. Копировать ссылку сохраняет ваши настройки в ссылке.
Когда больше ОЗУ не поможет
Лаги обычно идут от CPU: обычный сервер выполняет большую часть работы в одном основном потоке, поэтому быстрое ядро помогает больше, чем лишняя память. Прежде чем переходить на тариф побольше, выполните /spark health, чтобы увидеть память и TPS, и /spark profiler, чтобы увидеть, что отнимает время. spark встроен в Paper начиная с 1.21. Снижение view-distance и simulation-distance экономит и память, и CPU, а предварительная генерация мира плагином вроде Chunky избавляет от спайков при генерации новых чанков во время игры.