Сначала выберите Java под версию сервера
Сначала откройте таблицу требований Paper: для Paper 1.20–1.21.11 рекомендуется Java 21, для 26.1+ — Java 25. Скачайте нужный JDK с Adoptium: выберите версию, свою ОС и архитектуру amd64/x64 либо arm64. На Windows установите MSI, откройте новый PowerShell и выполните java -version; на Linux проверьте ту Java, которую запускает сервис.
Проверка интерактивного терминала не проверяет автоматически systemd. Для собственного сервиса minecraft.service выполните systemctl cat minecraft.service: найдите ExecStart и путь к Java. Если в команде указан /opt/jdk-25/bin/java, проверяйте /opt/jdk-25/bin/java -version, а не другую программу из PATH. Имя сервиса замените своим.
java -versionЧто означают Xms и Xmx
Xms задаёт исходный размер Java-кучи, а Xmx — её максимальный размер. Куча хранит многие объекты программы, но не описывает всю память процесса. Помимо неё используются другие области и нативные ресурсы. Поэтому значение Xmx 4G не означает, что процесс при любых условиях займёт ровно 4 гигабайта.
Операционной системе, дисковому кешу, базе данных и мониторингу тоже нужна память. Если на одной машине работают сервер Minecraft, PostgreSQL и сайт, бюджет должен учитывать их вместе. Нельзя распределить весь физический объём на Java и считать остальные службы бесплатными.
В контейнере дополнительно учитывайте установленный лимит. Хост может иметь много памяти, но контейнеру доступен меньший объём. Если лимит ниже реального потребления процесса, его способен завершить механизм ограничения среды. В таком случае увеличение Xmx без изменения общего бюджета ухудшит ситуацию.
| Параметр или показатель | Что означает | Чего не показывает |
|---|---|---|
| -Xms | Начальный размер кучи | Общий расход памяти хоста |
| -Xmx | Максимальный размер кучи | Предел всей памяти Java-процесса |
| RSS процесса | Физическая память процесса | Свободный запас других служб |
| Лимит контейнера | Ограничение окружения | Гарантию, что всё доступно куче |
Составьте бюджет до изменения запуска
Пример бюджета для машины с 8 ГБ RAM: 4 ГБ максимальной Java-кучи, остаток — ОС, нативной памяти JVM и небольшим соседним службам. Это стартовый бюджет; если на той же машине PostgreSQL, сайт и другие игры, посчитайте их отдельно. На Linux выполните free -h, df -h . и посмотрите systemctl show minecraft.service -p MemoryMax: лимит сервиса может быть меньше всей RAM.
Остановите сервер через stop в его консоли, откройте каталог с paper.jar и выполните приведённую команду. Xms здесь 2 ГБ, Xmx 4 ГБ; после проверки можно сравнить с Xms4G. Название JAR замените фактическим. Для контейнера сначала проверьте установленный memory limit, иначе увеличение Xmx может закончиться OOMKill.
- Сохраните прежний скрипт запуска под отдельным именем, например
start.before-ram.sh. - Проверьте
java -version, свободную память и лимит сервиса/контейнера. - Замените существующие Xms/Xmx в команде запуска; не оставляйте две пары аргументов.
- Повторите обычную нагрузку: вход игроков, телепорт в новые чанки, запуск мини-игры.
- Выполните
/spark tps, сравните паузы и использование всей машины, затем решите, нужен ли другой объём.
java -Xms2G -Xmx4G -jar paper.jar --noguiКак отличить нехватку памяти от другого ограничения
В установленном spark выполните /spark health show --memory. В старом выпуске аналогичная команда может называться healthreport; смотрите /spark help и справочник версии автора. Если доступен только обычный health, откройте /spark health и раздел памяти. Сравнивайте снимок во время нагрузки с состоянием после неё, не принимайте один высокий показатель кучи за утечку.
Если процесс завершился, выполните journalctl -u minecraft.service --since "30 minutes ago" --no-pager и ищите OutOfMemoryError, oom-kill, Killed process, код завершения. JVM OutOfMemoryError и убийство системой по лимиту — разные ситуации. Внешний журнал и logs/latest.log сохраните до следующего старта.
Прежде чем менять память, прочитайте разделение причин лагов.
Флаги JVM: используйте понятный набор
Длинная строка из старого гайда может содержать неподходящие для текущей Java опции. Начните с рабочей команды выбранной версии Paper и документированного размера памяти. Если добавляете специальные флаги, запишите их назначение и проверяйте результат на той же нагрузке.
Документация Paper предлагает генератор запуска и объяснение распространённых Aikar-флагов. Это источник для изучения, а не повод копировать чужой объём кучи и все параметры без оценки среды. Не меняйте одновременно Java, ядро, память и флаги: при сбое будет трудно понять причину.
Сохраняйте команду запуска в воспроизводимой конфигурации, например в сервисе или инфраструктурном репозитории. Секреты при этом не должны попадать в публичный файл. Чёткий запуск помогает после переезда сравнить новое окружение со старым и быстро вернуть рабочие значения.
Пример команды запуска, а не готовый бюджет
Здесь 4G — пример размера кучи, а paper.jar — условное имя скачанного файла. Подставьте свой бюджет и имя JAR. Равные Xms и Xmx задают одинаковый начальный и максимальный размер; меньший Xms оставляет возможность роста кучи до Xmx. Сам выбор этих значений не гарантирует ускорения. При запуске через systemd или панель изменяйте предусмотренную команду сервиса, а не создавайте второй сервер рядом.
java -Xms4G -Xmx4G -jar paper.jar --noguiКогда нужен профиль
Для проблемы во время игры снимите /spark profiler start --timeout 60; повторите действие, дождитесь ссылки и откройте Server thread. Для подозрения на частое создание объектов предусмотрен /spark profiler start --alloc --timeout 60, но поддержка режима зависит от ОС и движка профилирования. Документация spark объясняет параметры; отчёт CPU и отчёт выделений решают разные задачи.
Если растёт память между несколькими одинаковыми раундами, запишите три точки: до запуска, после десяти завершённых раундов и после выхода игроков. Сверьте активные задачи плагинов и удерживаемые игровые объекты. Изменение Xmx без этого сравнения только отложит повторение проблемы.
Практический порядок диагностики находится в статье разбор профиля spark.
Проверка после изменения
Проведите обычную игровую сессию с типичным числом игроков. Посетите активные базы, выполните действия мини-игр и проверьте загрузку новых областей. Посмотрите на устойчивость тиков, паузы и свободный запас всей машины.
Если стало лучше, сохраните рабочий запуск и результат проверки. Если улучшения нет, верните прежний параметр и исследуйте следующую причину. Цель настройки — стабильная работа сервера, а не максимальный объём в Xmx или минимальная свободная память на графике.



