Если вы когда-нибудь задумывались, как же запустить свой Minecraft сервер, то вы попали по адресу! В этом посте мы разберём, что такое start.bat (или start.sh для Linux), как правильно настроить запуск сервера, какие параметры памяти и флаги JVM использовать, и почему это важно для производительности вашего игрового мира.


Что такое start.bat и зачем он нужен

Start.bat — это ваш персональный лаунчер для сервера Minecraft на Windows. Представьте его как дирижёра оркестра: он запускает Java с нужными параметрами и поднимает сервер. Для Linux аналог — скрипт start.sh, который выполняет ту же роль, но в формате bash.

Внутри этого файла прописывается команда запуска Java с указанием файла ядра сервера (обычно .jar), параметров памяти и флагов для оптимизации.


SERVER_FILE_NAME — что это и как выбрать

В скрипте вы увидите переменную SERVER_FILE_NAME. Это просто имя вашего серверного ядра — файла .jar, который запускает Minecraft сервер. Например, если у вас файл называется spigot.jar или paper.jar, то в скрипте нужно заменить SERVER_FILE_NAME на это имя.

java -Xmx2G -Xms2G -jar spigot.jar nogui

Замените spigot.jar на своё имя файла, и всё готово к запуску.


Отличия bat и bash скриптов

  • Windows (bat): команды пишутся в формате .bat, например:
java -Xmx2G -Xms2G -jar spigot.jar nogui
PAUSE
  • Linux (bash): используется .sh с синтаксисом bash, например:
#!/bin/bash
while true; do
  java -Xmx2G -Xms2G -jar spigot.jar nogui
  echo "Restarting in 5 seconds..."
  sleep 5
done

Обратите внимание, что в Linux часто используют цикл while true; do ... done для автоматического перезапуска сервера при сбоях. Но будьте осторожны — бесконечный цикл может привести к излишней нагрузке и заполнению логов, если сервер падает постоянно.


Как выбрать память для сервера Minecraft

Память — это топливо для вашего сервера. Рекомендуется выделять 6–10 ГБ памяти, даже если у вас мало игроков. Почему? Потому что Minecraft любит жрать память, а сборщик мусора G1GC работает лучше при большем объёме.

Память (RAM) Рекомендации по Xmx и Xms Комментарии
< 6 ГБ Xmx = Xms = доступная память - 1 ГБ Оставьте память для ОС
6–10 ГБ Xmx = Xms = 6–10 ГБ Оптимально для большинства серверов
> 12 ГБ Xmx = Xms = выделенная память с дополнительными флагами Настройка флагов JVM для больших объёмов

Xmx — максимальный объём памяти, который сервер может использовать.
Xms — стартовый объём памяти при запуске.

Важно: Xmx и Xms обычно ставят одинаковыми, чтобы избежать лишних затрат на расширение кучи во время работы.


Почему больше памяти не всегда лучше

Увеличение памяти сверх 10–12 ГБ не даёт пропорционального прироста производительности. Это называется точка убывающей отдачи — дальше вы просто тратите ресурсы впустую. Minecraft не умеет эффективно использовать сверхбольшие объёмы памяти, а сборщик мусора начинает работать дольше.


Флаги JVM для производительности — что и зачем

PaperSpigot и другие оптимизированные ядра рекомендуют использовать набор флагов JVM, которые улучшают сборку мусора и общую производительность.

Пример флагов для 6–10 ГБ памяти:

java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 \
-XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem \
-XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=true -Daikars.new.flags=true \
-jar paper.jar --nogui

Что делают ключевые флаги:

  • -XX:+UseG1GC — включает сборщик мусора G1, оптимальный для Minecraft.
  • -XX:MaxGCPauseMillis=200 — ограничивает паузу сборки мусора 200 мс.
  • -XX:+UnlockExperimentalVMOptions — разрешает экспериментальные опции.
  • -XX:+DisableExplicitGC — запрещает вызовы System.gc(), которые могут тормозить сервер.
  • -XX:+AlwaysPreTouch — заранее выделяет всю память, чтобы избежать задержек.
  • -Dusing.aikars.flags=true — активирует набор оптимизаций от Aikar.

Особенности запуска на Windows и Linux

Платформа Пример команды запуска Особенности
Windows java -Xmx2G -Xms2G -jar spigot.jar nogui + PAUSE PAUSE останавливает окно после завершения, полезно для отладки, но не нужен в продакшене
Linux while true; do java -Xmx2G -Xms2G -jar spigot.jar nogui; sleep 5; done Цикл перезапуска, требует контроля логов и ресурсов

Ведение журнала сборки мусора (GC logging)

Для диагностики проблем с памятью полезно включить логирование GC.

  • Java 8–10:
-Xloggc:gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps \
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=1M
  • Java 11+:
-Xlog:gc*:logs/gc.log:time,uptime:filecount=5,filesize=1M

Практические советы по настройке start.bat

  • Всегда заменяйте SERVER_FILE_NAME на имя вашего .jar файла.
  • Устанавливайте Xmx и Xms равными, чтобы избежать лишних затрат на расширение памяти.
  • Оставляйте минимум 1–2 ГБ памяти для операционной системы.
  • Используйте рекомендованные флаги JVM для улучшения производительности.
  • В Windows PAUSE полезен для отладки, но в продакшене его лучше убрать.
  • В Linux будьте осторожны с бесконечным циклом while true, чтобы не создавать нагрузку при постоянных сбоях.
  • Для автоматического перезапуска на Linux лучше использовать systemd или screen/tmux вместо бесконечного цикла.

Пример итогового start.bat для Windows

@echo off
java -Xmx6G -Xms6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -jar paper.jar nogui

Пример start.sh для Linux с перезапуском

#!/bin/bash
while true; do
  java -Xmx6G -Xms6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -jar paper.jar nogui
  echo "Сервер упал, перезапуск через 5 секунд..."
  sleep 5
done

Заключение

Настройка start.bat или start.sh — это искусство балансировки памяти, производительности и стабильности. Правильный выбор параметров памяти и JVM-флагов позволит вашему Minecraft серверу работать плавно и без лагов, а грамотный скрипт запуска — обеспечит удобство и безопасность.


Полезные ссылки


Теперь вы вооружены знаниями, чтобы создать свой идеальный Minecraft сервер! Не бойтесь экспериментировать с памятью и флагами, но помните про баланс и стабильность. Удачи в кубическом мире!