# Флаги JVM для Minecraft-сервера: Aikar's flags, зачем они нужны и как не сломать запуск

> Что такое Aikar's flags, какие параметры JVM в них важны, почему на EGN память задаёт тариф, и что делать, если сервер тормозит на сборках мусора.

- Рубрика: Гайды по играм
- Игра: Minecraft
- Опубликовано: 2026-11-13T13:00:00+03:00
- Обновлено: 2026-11-13T13:00:00+03:00
- Адрес: https://blog.egnetwork.ru/minecraft-jvm-flagi-aikar
- Автор: Команда EGN

Сервер Minecraft — это программа на Java. Её поведение во многом зависит от того, как JVM управляет памятью и сборкой мусора. Самый известный готовый набор настроек называется **Aikar's flags**: его предложил разработчик Aikar для серверов Paper, и он вошёл в официальную документацию PaperMC. Если сервер тормозит с периодическими «провалами», эти флаги часто помогают. Но перед тем как их копировать, нужно понимать, что именно они меняют и что в панели EGN можно сделать самостоятельно.

## Коротко

Aikar's flags — набор параметров JVM для сборщика мусора G1GC, который уменьшает длинные паузы на Paper 1.21.x. Официальный пример рассчитан на кучу 10 ГБ (`-Xms10G -Xmx10G`); значения меняются под вашу память. На EGN память задаёт тариф, поэтому пользователь не добавляет `-Xmx` сам: команду запуска меняет поддержка.

## Что такое Aikar's flags

Java по умолчанию сама решает, сколько памяти взять и когда запускать сборку мусора. Для игрового сервера это плохо: сборка может остановить все потоки на заметное время, и игроки видят рывок. Флаги Aikar задают G1GC и настраивают, как часто и насколько аккуратно он работает.

Официальная страница PaperMC приводит такой набор (пример для кучи 10 ГБ):

```bash
-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=https://mcflags.emc.gs -Daikars.new.flags=true
```

Смысл нескольких ключевых параметров:

- `-XX:+UseG1GC` — включает сборщик G1, на котором построен набор.
- `-XX:MaxGCPauseMillis=200` — цель: паузы сборки не длиннее 200 мс. Это цель, а не гарантия.
- `-XX:+DisableExplicitGC` — запрещает явные вызовы сборки мусора из кода модов и плагинов, которые любят вызывать `System.gc()`.
- `-XX:+AlwaysPreTouch` — заранее занимает всю память кучи при старте. Запуск становится медленнее, зато во время игры нет задержек на выделение памяти.
- `-XX:G1NewSizePercent=30` и `-XX:G1MaxNewSizePercent=40` — доля «молодого» поколения в куче.
- `-XX:G1HeapRegionSize=8M` — размер региона G1 в примере из документации.

Страница рекомендует, чтобы `-Xms` и `-Xmx` были равны. Если начальная куча меньше максимальной, часть памяти остаётся неиспользованной, а G1 получает меньше места для работы. Там же сказано: не стоит отдавать серверу всю память хоста. Оставляйте запас примерно 1000–1500 МБ под саму систему и JVM вне кучи.

Это именно пример: объём кучи подбирайте под свой тариф и оставляйте запас, о котором сказано выше. Актуальный набор всегда сверяйте со страницей Aikar's flags в документации PaperMC. Там же рекомендация держать для Paper не меньше 6–10 ГБ.

## Как память задаётся на EGN

На EGN память сервера определяется тарифом. Откройте раздел **«Запуск»** в панели. Там есть блок **«Память и производительность»**: сколько памяти в тарифе, сколько получает Java и какой запас остаётся системе.

![Блок «Память и производительность» в разделе «Запуск»: память по тарифу, часть для Java и запас системе](https://blog.egnetwork.ru/media/208)

В примере на скриншоте тариф даёт 3 ГБ. Java получает 2,5 ГБ, а 0,5 ГБ остаются системе и JVM вне кучи. Стандартная команда запуска в панели задаёт кучу как долю памяти тарифа (около 85%) и не использует `-XX:+AlwaysPreTouch`, поэтому ручной `-Xmx` для обычной работы не нужен. Ручной `-Xmx` больше памяти тарифа приводит к падению сервера.

Доктор сервера в панели подсказывает то же самое: если в «Запуске» задан `-Xmx`, ставьте его не выше 85% памяти тарифа, а лучше уберите ручное значение.

### Выбор Java

Версия Java должна подходить под Minecraft. В том же разделе «Запуск» есть карточки:

![Выбор Java в разделе «Запуск»: Java 25 для Minecraft 26.x, Java 21 для 1.20.5–1.21.x](https://blog.egnetwork.ru/media/207)

- Java 25 — для Minecraft 26.x и новее;
- Java 21 — для 1.20.5–1.21.x;
- Java 17 — для 1.18–1.20.4 (для 1.17 в панели есть карточка Java 16, для 1.13–1.16 — Java 11);
- Java 8 — для 1.8–1.16 и старого Forge.

Если выбрать Java 21 для Minecraft 26.3, сервер не запустится: панель сама покажет предупреждение, что нужна Java 25.

### Команда запуска

Внизу раздела есть блок **«Для опытных: команда запуска»**. Это то, как сервер запускается на самом деле, со всеми подставленными переменными. В панели её нельзя отредактировать. Текст блока прямо говорит: команду меняет поддержка или администратор, а обычно хватает полей выше.

Поэтому Aikar's flags на EGN не вписываются в интерфейс сами по себе. Если вам нужен другой набор флагов, напишите в поддержку, опишите сервер и цель (например, убрать паузы при сохранении). Поддержка проверит на вашем тарифе, подходит ли набор, и внесёт команду. Не обещаем, что любой набор пройдёт без проверки: кучу и память выбирает тариф.

## Примеры: как понять, что флаги нужны

Прежде чем менять что-либо, посмотрите, что происходит. Признаки, при которых флаги G1GC обычно помогают:

- в логе регулярно встречаются предупреждения о долгих сборках, а игроки видят короткие рывки;
- MSPT (время одного тика) периодически взлетает, хотя средняя нагрузка невысокая;
- после перезапуска сервер стабилен, а через несколько часов появляются провалы.

Если сервер падает с `OutOfMemoryError`, дело обычно не во флагах, а в памяти тарифа или в модах, которые утекают. Флаги GC этого не исправят.

## Симптом → причина → решение

| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Рывки раз в несколько минут, MSPT скачет | Долгие сборки мусора | Проверить MSPT через `/spark tps`, попросить поддержку применить набор Aikar для вашей памяти |
| Сервер стартует очень медленно | Если набор Aikar применён, `-XX:+AlwaysPreTouch` занимает всю память при старте | Это ожидаемо; старт дольше, игра после него ровная |
| `OutOfMemoryError` в логе | Памяти тарифа не хватает или мод утекает | Увеличить тариф, проверить моды через «Моды и плагины», снять лишнее |
| Сервер не стартует на Java 17 | Minecraft 1.21 требует Java 21 | В «Запуске» выбрать Java 21 |
| Ошибка «Unrecognized VM option» | Флаг не поддерживается версией Java | Не добавлять флаги вручную; вернуть стандартную команду через поддержку |

## Шаги для проверки на своём сервере

1. Откройте **«Консоль»** и выполните `/spark tps`. Посмотрите MSPT и загрузку CPU.
2. Откройте **«Запуск»**, проверьте версию Java и блок памяти. Если версия не совпадает с Minecraft, поправьте её.
3. Включите **«Доктор сервера»** и нажмите «Почему не запускается?», если сервер падает. Доктор покажет причину и предложит починку.
4. Если после исправлений рывки остались, запустите профилирование через `/spark profiler` (см. статью [Spark: как найти причину лагов](https://blog.egnetwork.ru/minecraft-spark-profiler)).
5. Только после этого решайте, нужен ли набор Aikar. Напишите в поддержку, что сервер на Paper 1.21.x, какой тариф и что видно в MSPT.

> [!TIP] Меняйте по одному параметру
> Если вы просите применить новый набор флагов, фиксируйте MSPT до и после. Без цифр до и после понять, помогло ли, невозможно.

> [!WARNING] Не ставьте -Xmx выше памяти тарифа
> Java с большим `-Xmx` будет упираться в лимит контейнера. Результат — `OutOfMemoryError` или внезапная остановка сервера с кодом 137.

> [!NOTE] Версия Paper и Java
> Для Paper 1.21.x используйте Java 21. Для Minecraft 26.x — Java 25. Не выбирайте Java по привычке: сверяйтесь с карточками в «Запуске».

## Как проверить, что изменение помогло

Любую правку JVM нужно сравнивать с исходным состоянием. Порядок простой.

1. Запустите сервер в обычной нагрузке, например в вечерний час пик, и выполните в **«Консоли»** команду `/spark tps`. Запишите MSPT и загрузку CPU.
2. Через `/spark profiler start --timeout 300` снимите профиль за пять минут. Так вы увидите, сколько времени занимает сборка мусора по сравнению с логикой игры.
3. Внесите изменение: попросите поддержку применить набор или поправьте версию Java в «Запуске». Перезапустите сервер через «Запуск» → «Сохранить и перезапустить».
4. Повторите шаги 1 и 2 в такой же нагрузке и сравните цифры.

Если MSPT не изменился, а профиль показывает большую долю работы модов или плагинов, флаги JVM дают мало. В таком случае помогает чистка модов или переход на более лёгкий набор, а не новые флаги.

Цифры до и после нужны, чтобы не принимать на веру ощущения. Игроки часто говорят «стало лучше» после перезапуска, хотя причина была в том, что сервер просто только что поднялся и пустой.

## Что делать, если набор не помог

Не все проблемы лечатся флагами JVM. Если после замены набора MSPT не изменился, проверьте по порядку:

1. Профиль spark: если широкая ветка в модах или плагинах, JVM тут не при чём.
2. Версия Java: убедитесь, что выбрана карточка, которая соответствует Minecraft, а не старая.
3. Память тарифа: если запас системе почти ноль, JVM не может работать свободно. Нужен тариф с большим объёмом.
4. Диск: медленный диск даёт длинные паузы при сохранении, которые G1 не лечит.

Вернуться к стандартной команде запуска можно через поддержку. Не меняйте её вручную в файлах, если не уверены: ошибка в команде запуска мешает старту.

## Частые ошибки

**Копировать набор на 20 ГБ на сервер с 4 ГБ.** Флаги не создают памяти. Если куча больше памяти тарифа, сервер падает или упирается в лимит.

**Ставить `-Xms` меньше `-Xmx` и думать, что так экономнее.** Это то, что страница PaperMC советует не делать: часть памяти простаивает, а G1 работает хуже.

**Добавлять флаги «на всякий случай».** Каждый флаг влияет на поведение сборщика. Без замеров вы не узнаете, что стало лучше.

**Думать, что флаги починят моды.** Утечки, лишние тики и тяжёлые плагины флагами не лечатся. Сначала профиль, потом настройки JVM.

**Менять версию Java без проверки.** Java 21 для Minecraft 26.x не подходит, Java 25 для 1.20 — тоже. Выбирайте по версии игры.

## Итог

Aikar's flags — проверенный набор для G1GC, который уменьшает длинные паузы сборщика мусора на Paper. Официальный пример рассчитан на кучу 10 ГБ, значения для других объёмов есть на странице PaperMC. На EGN память задаёт тариф: блок «Память и производительность» в «Запуске» показывает, сколько получает Java. Команду запуска меняет поддержка, поэтому набор флагов нужно согласовать с ней, а до этого проверить MSPT через `/spark tps` и устранить причины, которые флагами не лечатся.

## Вопросы и ответы

### Нужны ли Aikar's flags на любом Minecraft-сервере?

Нет. Они рассчитаны на Paper и G1GC. Если сервер не тормозит и MSPT стабилен, менять JVM не нужно.

### Можно ли задать -Xmx самому в панели EGN?

В команде запуска поля для этого нет: её меняет поддержка. Память определяет тариф, а блок «Память и производительность» в «Запуске» показывает, сколько получает Java.

### Какой Java нужен для Minecraft 1.21.1?

Java 21. Для 26.x нужна Java 25, для 1.17–1.20.4 — Java 17. Выбирайте карточку в разделе «Запуск».

### Почему сервер стартует дольше после флагов Aikar?

Из-за `-XX:+AlwaysPreTouch`: JVM заранее занимает всю кучу. Это цена за ровную работу во время игры. В стандартной команде панели этого флага нет.

Сервер под Minecraft за пару минут — [egnetwork.ru](https://egnetwork.ru/)

## Официальные источники

- [mcflags.emc.gs](https://mcflags.emc.gs/)

---

Материал EGN (blog.egnetwork.ru), обновлено 13 ноября 2026; при цитировании указывайте ссылку.
