OutOfMemoryError: Java heap space — что значит и сколько памяти давать

Ошибки

Ошибка выглядит так:

Сообщение об ошибке нехватки памяти в консоли Minecraft
java.lang.OutOfMemoryError: Java heap space

Она означает ровно одно: игре или серверу не хватило той памяти, которую вы ей разрешили занять. Не той, что есть в компьютере, а той, что указана в параметре -Xmx.

Где задаётся лимит

У сервера — в скрипте запуска: java -Xms2G -Xmx4G -jar server.jar nogui. Здесь -Xmx4G и есть потолок. У клиента — в настройках профиля лаунчера, в поле аргументов JVM.

-Xms — сколько занять сразу, -Xmx — максимум. Для сервера их часто ставят равными, чтобы память не перераспределялась на ходу.

Сколько нужно именно вашей сборке — посчитает калькулятор RAM по числу модов и игроков.

Сколько давать

Что запускаемРазумный -Xmx
Ванильный клиент2 ГБ
Клиент со сборкой 100–200 модов4–6 ГБ
Ванильный сервер, 5–10 игроков2 ГБ
Сервер с плагинами, 20–40 игроков4 ГБ
Модовый сервер, большая сборка6–8 ГБ

Почему «больше» — не всегда «лучше»

Распространённое заблуждение: выделить всё, что есть. Так делать не стоит по двум причинам.

Первая: системе и самой Java нужна память сверх кучи. Указав -Xmx8G на машине с 8 ГБ, вы гарантируете либо отказ запуска (Could not reserve enough space for object heap), либо уход в файл подкачки, после которого игра начнёт заикаться.

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

Если памяти объективно мало

Прежде чем покупать тариф подороже, попробуйте уменьшить расход.

Подробно про экономию памяти: разбор FerriteCore.

Когда дело не в настройках

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

И честное: на тарифе с 1 ГБ модовый сервер не поедет никакими настройками. Если сборка большая, вопрос решается только памятью.

Хостинги сравнены по цене за гигабайт памяти — в рейтинге хостингов.

Частые вопросы

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

Ванильному на 5–10 игроков хватает 2 ГБ, сборке на 100+ модов нужно 6–8. Выделять больше двух третей физической памяти машины нельзя: системе тоже нужно место.

Поможет ли выделить 16 ГБ вместо 8?

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

Читайте также