Добро пожаловать на Craft‑Bukkit

Всё о Minecraft серверах: гайды, команды, скачивание сборок и полезные советы для администраторов и игроков.

Ошибка Java Heap Space на сервере Minecraft: как диагностировать и исправить за 5 минут

wergio 23.07.2026 11:28 3
Ошибка Java Heap Space: как исправить нехватку памяти на сервере Minecraft за 5 минут.

Введение: самая частая ошибка серверов

Ошибка «java.lang.OutOfMemoryError: Java heap space» — это кошмар каждого администратора Minecraft-сервера. Сервер внезапно крашится, игроки теряют прогресс, а в консоли — пугающее сообщение о нехватке памяти. Эта ошибка возникает, когда Java-машина исчерпывает выделенную ей оперативную память. В 90% случаев проблема решается за 5 минут правильной настройкой параметров запуска. В этом гайде я разберу причины, диагностику и все способы исправления.

Что означает «Java heap space»

Heap (куча) — это область оперативной памяти, которую Java использует для хранения объектов. Когда Minecraft-сервер загружает чанки, мобов, предметы и плагины — всё это помещается в heap. Если heap заполняется полностью, а Java не может освободить место (сборщик мусора не справляется), происходит краш с ошибкой OutOfMemoryError.

Симптомы нехватки памяти

  • Сервер работает, но с лагами (TPS падает ниже 15).
  • В консоли появляются предупреждения: «Can't keep up! Is the server overloaded?»
  • Перед крашем в логах есть строки: «java.lang.OutOfMemoryError: Java heap space».
  • Сборщик мусора (GC) работает постоянно, потребляя CPU.
  • После краша сервер автоматически перезапускается (если настроен авто-рестарт).

Причины ошибки

ПричинаВероятностьРешение
Слишком мало выделенной памяти (-Xmx)70%Увеличить -Xmx в параметрах запуска
Утечка памяти в плагине или моде15%Найти проблемный плагин, обновить или удалить
Слишком большой view-distance10%Уменьшить до 6-8
Неправильные флаги GC (сборщика мусора)3%Использовать оптимизированные флаги Aikar
Мировой файл повреждён или слишком большой2%Оптимизировать мир, удалить ненужные чанки

Шаг 1: Проверка текущих параметров памяти

В консоли сервера или в логах найдите строку запуска. Она выглядит примерно так:

java -Xmx2G -Xms1G -jar server.jar nogui

  • -Xmx — максимальный размер heap. Если это 2G, а у вас 10 игроков и 20 плагинов — проблема здесь.
  • -Xms — начальный размер heap. Рекомендуется устанавливать равным -Xmx для стабильности.

Шаг 2: Сколько памяти нужно серверу

Тип сервераИгроковМинимальный -XmxРекомендованный -Xmx
Vanilla (без плагинов)1-51 ГБ2 ГБ
Paper + 10 плагинов5-103 ГБ4-5 ГБ
Paper + 30 плагинов10-205 ГБ6-8 ГБ
Forge + 50 модов5-106 ГБ8-10 ГБ
Forge + 100+ модов5-108 ГБ10-12 ГБ
Важно: не выделяйте серверу 100% ОЗУ вашего ПК/VDS. Оставьте 1-2 ГБ для операционной системы. Если у вас 8 ГБ ОЗУ — максимум для сервера 6 ГБ.

Шаг 3: Правильные флаги запуска (Aikar's Flags)

Обычный запуск java -Xmx4G -jar server.jar работает, но не оптимален. Используйте оптимизированные флаги от Aikar (разработчик Paper):

java -Xms4G -Xmx4G -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 -jar server.jar nogui

Что делают эти флаги:

  • G1GC — современный сборщик мусора, лучше стандартного Parallel GC.
  • AlwaysPreTouch — предварительно выделяет память, ускоряет работу.
  • DisableExplicitGC — запрещает плагинам вручную вызывать сборку мусора (экономит CPU).
  • MaxGCPauseMillis=200 — ограничивает паузы сборщика мусора 200 мс (меньше лагов).

Шаг 4: Диагностика утечки памяти

Если вы увеличили -Xmx до 8 ГБ, но ошибка повторяется — вероятно, утечка памяти в плагине или моде.

Как найти виновника

  1. Установите плагин Spark: /spark profiler start.
  2. Дайте серверу поработать 10-15 минут под нагрузкой.
  3. Остановите профилирование: /spark profiler stop.
  4. Spark выдаст ссылку на веб-отчёт. Откройте её.
  5. В разделе «Memory» посмотрите, какие плагины/классы потребляют больше всего памяти.
  6. Обновите или удалите проблемный плагин.

Шаг 5: Оптимизация сервера

Снижение нагрузки на память

  • Уменьшите view-distance в server.properties до 6-8. Каждый лишний чанк в памяти — это 2-5 МБ.
  • Уменьшите simulation-distance до 4-6. Меньше мобов и ферм в активных чанках.
  • Используйте Paper/Purpur вместо ванильного ядра — они оптимизируют использование памяти на 30-50%.
  • Установите плагины оптимизации: Chunky (предзагрузка чанков), ClearLag (удаление мусора с земли).
  • Ограничьте количество мобов в bukkit.yml: spawn-limits.monsters: 30 (по умолчанию 70).

Типичные ошибки администраторов

  • Выделяют слишком много памяти. Если указать -Xmx16G на машине с 16 ГБ ОЗУ — система начнёт свопить на диск, и сервер будет лагать ещё сильнее.
  • Используют 32-битную Java. 32-битная Java ограничена ~1.5 ГБ heap. Всегда используйте 64-битную Java.
  • Игнорируют обновления Java. Java 8 на сервере 1.20+ работает нестабильно. Используйте Java 17 или 21 для современных версий.
  • Не мониторят память. Команда /memory (с плагином EssentialsX) или /spark health покажет текущее использование памяти.

💡 Совет профи

Настройте автоматический перезапуск сервера с очисткой памяти. Создайте скрипт restart.bat (Windows) или restart.sh (Linux), который при краше сервера автоматически запускает его снова через 10 секунд. На Linux используйте systemd-сервис с Restart=always. А с плагином ServerRestarter сервер будет перезагружаться планово раз в сутки (например, в 4 утра), очищая память и предотвращая накопление утечек.
← К списку статей

💬 Комментарии (0)

⏳ Все комментарии проходят модерацию

🔒 Войдите, чтобы оставить комментарий

😊 Пока нет комментариев. Будьте первым!