# Minecraft: OutOfMemoryError — что делать и как не угадывать

> Сервер падает с OutOfMemoryError или Exit code 137. Разбираем, какая это память, как проверить лимит и -Xmx и когда помогает только тариф.

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

Сервер Minecraft падает посреди игры, а в логе стоит `java.lang.OutOfMemoryError`. Первое желание понятно: добавить памяти. Иногда это правильное решение, но часто оно ничего не меняет. Ошибка с таким названием может означать три разные вещи, и каждая лечится по-своему. В этой статье разберём, как понять, что именно закончилось, и что сделать в панели EGN.

## Коротко

`OutOfMemoryError: Java heap space` значит, что закончилась куча Java. Её размер задаёт флаг `-Xmx` в разделе «Запуск». Если в консоли сервер просто исчезает с кодом `Exit code 137` и строкой `Out of memory: true`, его остановила операционная система, потому что процесс вышел за лимит памяти тарифа. Сначала определите, какая это ошибка, и только потом меняйте `-Xmx` или тариф.

## Шаги

1. **Найдите строку ошибки.** Откройте «Файлы», папку `logs/` и файл `latest.log`. Поищите слово `OutOfMemory` или откройте последние строки консоли. Если сервер уже упал, загляните в папку `crash-reports/`: там лежит отчёт с трассировкой и пометкой о памяти.

2. **Определите тип ошибки.** Вариантов немного:
   - `java.lang.OutOfMemoryError: Java heap space` — закончилась куча, та самая часть памяти, которую задаёт `-Xmx`;
   - `java.lang.OutOfMemoryError: GC overhead limit exceeded` — сборщик мусора работает почти всё время и почти ничего не освобождает, по сути память тоже кончилась;
   - `java.lang.OutOfMemoryError: Metaspace` — закончилась память под описания классов; обычно это признак большого количества модов;
   - в логе нет OutOfMemoryError, но есть `Exit code 137` — процесс убит системой (сигналом SIGKILL) из-за лимита тарифа.

3. **Посмотрите лимит и текущий `-Xmx`.** Лимит памяти тарифа и пик за неделю виден в карточке услуги в кабинете, в блоке «Нагрузка»; текущее потребление — на графике памяти в «Консоли». Флаги Java задаются в разделе «Запуск»: там строка вида `-Xms2G -Xmx4G` (это пример, у вас будет своё значение). Сравните эти два числа.

4. **Проверьте, что `-Xmx` меньше лимита.** Память процесса Java — это не только куча. Рядом живут Metaspace, потоки, буферы и сама JVM. Если поставить `-Xmx` равным лимиту тарифа, система убьёт процесс раньше, чем JVM успеет выбросить OutOfMemoryError, и вы получите `Exit code 137` вместо понятного сообщения. Пример: на тарифе с 4 ГБ `-Xmx4G` — высокий риск падения с кодом 137, `-Xmx3G` оставляет запас. Точную цифру подбирайте по графику памяти, а не по одной ошибке.

   ![Доктор сервера показывает причину: процесс упёрся в память](https://blog.egnetwork.ru/media/263)

   Доктор сервера в консоли показывает эту же картину: «Серверу не хватило памяти», код выхода 137 и строка `Out of memory: true`. Кнопка «Запустить и проследить» перезапускает сервер и смотрит консоль заново.

5. **Если причина в куче (`Java heap space`).** Уберите то, что съедает память: лишние моды, большие предгенерированные миры, слишком большой `view-distance`. Если сборка без этого не работает, поднимайте и лимит, и `-Xmx` вместе, сохраняя запас.

6. **Если причина в системе (`Exit code 137`).** Когда `-Xmx` уже разумный, а сервер всё равно убивают, помогает только тариф с большим объёмом памяти. Увеличить ресурсы можно в кабинете; доплата считается за остаток срока.

7. **Перезапустите и смотрите график.** После изменений запустите сервер и через день-два посмотрите блок «Нагрузка» за неделю. Если память держится у лимита выше 85–90 %, запас всё ещё мал.

## Пример: как выглядит нехватка памяти

Вот пример графика из тестового кабинета за семь дней (данные стенда, не боевые). Тариф с 2 ГБ, пик памяти — 93 % от лимита, а выше 88 % она держалась шесть часов подряд.

![Блок «Нагрузка» за неделю: память у лимита 2,0 ГБ](https://blog.egnetwork.ru/media/536)

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

## Что на самом деле занимает память

Схема ниже показывает, что входит в память процесса. Важно видеть, что `-Xmx` — только один кусок из общего лимита.

![Из чего складывается память процесса Java](https://blog.egnetwork.ru/media/262)

Поэтому правило «поставлю -Xmx побольше и всё заработает» не работает. Куча может быть почти пустой, а процесс всё равно убьют, если в сумме памяти больше, чем разрешил тариф. И наоборот: куча может быть заполнена, а лимит ещё далеко, тогда нужно увеличить `-Xmx`, а не тариф.

## Что записать перед изменениями

Прежде чем менять `-Xmx` или тариф, запишите пять вещей: версию игры и ядра (например, Paper 1.21.4), число модов или плагинов, лимит памяти тарифа, текущие флаги из «Запуска» и точный текст ошибки. Через неделю это поможет понять, какое изменение дало эффект, а поддержке сэкономит время, если понадобится помощь.

Текст ошибки можно найти прямо в логе. Если у вас есть доступ к файлам по SFTP или через панель, выполните поиск:

```bash
grep -n -i "outofmemory\|out of memory" logs/latest.log | head -20
ls -la crash-reports/
```

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

Отдельно о флагах `-Xms` и `-Xmx`. `-Xms` задаёт начальный размер кучи, `-Xmx` — максимальный. Большой `-Xms` сразу резервирует память под кучу. На слабом тарифе это может привести к падению раньше, чем вы ожидаете. Если не уверены, оставьте `-Xms` меньше или равным `-Xmx` и не выставляйте его выше лимита.

Ещё одна деталь: лимит тарифа считается на весь процесс целиком, а не только на кучу. Если в «Нагрузке» память упирается в лимит, даже при скромном `-Xmx` сервер может быть остановлен системой, потому что кроме кучи в память входят Metaspace, стеки потоков и собственные буферы JVM. Поэтому смотрите не только на кучу, а на весь график.

> [!NOTE]
> **Сколько оставлять запаса.** Жёсткого правила нет: чем больше модов и плагинов, тем больше нужно места вне кучи. Ориентир для старта — `-Xmx` на четверть-пятую часть меньше лимита тарифа, дальше подбирайте по графику. Это ориентир, а не гарантия.

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

| Симптом в логе или панели | Вероятная причина | Что делать |
|---|---|---|
| `OutOfMemoryError: Java heap space` | Куча заполнена, `-Xmx` мал для сборки | Поднять `-Xmx` с запасом под лимит, убрать тяжёлые моды |
| `GC overhead limit exceeded` | Живых данных больше кучи, GC работает почти постоянно | То же, плюс уменьшить предгенерацию и `view-distance` |
| `OutOfMemoryError: Metaspace` | Очень много классов от модов | Меньше модов или тариф с большей памятью |
| `Exit code 137`, `Out of memory: true` | Система убила процесс за лимит тарифа | `-Xmx` меньше лимита, затем тариф больше |
| Память у лимита неделю, падения днём | Сервер живёт на краю памяти | Тариф с большим объёмом памяти |

Таблица нужна не для того, чтобы угадать, а чтобы сузить варианты. Сначала совпадает симптом, затем проверяете причину по логу, и только потом меняете настройку.

## Как сделать в панели EGN

1. Откройте карточку услуги в кабинете: блок «Нагрузка» покажет память за сутки или неделю, лимит тарифа и пик. Текущее потребление видно и на странице «Консоль» в панели.
2. Если сервер упал, доктор сервера в консоли сам покажет причину: для памяти это карточка «Серверу не хватило памяти».
3. Откройте «Запуск» и проверьте флаги Java: `-Xmx` должен быть меньше лимита из «Нагрузки».
4. Измените значение, сохраните и запустите сервер кнопкой «Запустить и проследить», если она есть в карточке доктора. Она запускает сервер и смотрит консоль заново.
5. Через сутки откройте график за неделю и сравните с прошлым периодом.

![Доктор сервера: процесс упёрся в лимит памяти](https://blog.egnetwork.ru/media/263)

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

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

- **Ставить `-Xmx` равным всему лимиту.** Так вы рискуете получить `Exit code 137` вместо понятной ошибки.
- **Поднимать `-Xmx` без роста тарифа.** Если лимит 2 ГБ, а `-Xmx` стоит 4 ГБ, JVM не получит обещанного, и система всё равно её остановит.
- **Смотреть только на последнюю строку.** Причина часто выше: за ней идёт вторичная ошибка. Поищите первое упоминание `OutOfMemory` в логе.
- **Лечить память удалением мира.** Мир тут ни при чём, а сорванные сохранения могут стоить вам прогресса. Сделайте бэкап через «Бэкапы», прежде чем что-то удалять.
- **Не смотреть на моды.** Тяжёлые моды и сборки с сотнями модов тратят много Metaspace и кучи. Если ошибка появилась после установки мода, откатите его и проверьте снова.

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

### Можно ли решить OutOfMemoryError одной настройкой?

Иногда да, если `-Xmx` выставлен меньше, чем нужно сборке, или больше лимита тарифа. Если сборка действительно требует больше памяти, одной настройкой не обойтись: нужен тариф.

### Сколько памяти дать Minecraft-серверу?

Ориентируйтесь на график памяти за неделю, а не на число из статьи. Если пики постоянно выше 85–90 % лимита, памяти мало. Для сборок с сотнями модов памяти обычно нужно заметно больше, чем для ванильного сервера.

### Почему сервер падает с Exit code 137?

Код 137 означает, что процесс убит сигналом SIGKILL. Чаще всего так делает система, когда процесс вышел за лимит памяти тарифа. Проверьте `-Xmx` и график памяти.

### Что значит GC overhead limit exceeded?

Сборщик мусора работает почти постоянно и почти ничего не освобождает. Это значит, что живых данных больше, чем помещается в кучу. Смотрите на то, что держит память: моды, мир, предгенерация.

## Итог

`OutOfMemoryError` — это не одна проблема, а несколько. Сначала определите тип ошибки по логу: куча, Metaspace или код 137 от системы. Затем сравните `-Xmx` с лимитом тарифа и оставьте запас. Если память держится у лимита, а `-Xmx` разумный, решение одно — больший тариф. Похожие разборы смотрите в статьях [про Java-версию](https://blog.egnetwork.ru/minecraft-unsupported-class-file-major-version), [про лаги](https://blog.egnetwork.ru/server-lagi-cpu-ram-disk-kak-ponyat) и [про чек-лист запуска](https://blog.egnetwork.ru/server-padaet-srazu-chek-list).

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

---

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