powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
11 сообщений из 11, страница 1 из 1
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38313306
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый!

Имею java.lang.OutOfMemoryError: Java heap space. Навскидку понять какая часть кода ее вызывает я не могу. Вопрос: как найти этот участок?

Пытаюсь делать heap dump, получаю: Dump file is incomplete: file size limit, не знаю смогу ли я его прочесть.
Даже если смогу - насколько я понимаю это просто таблица вида "ТИП ДАННЫХ - КОЛИЧЕСТВО ПАМЯТИ ИМ ЗАНЯТОЕ - КОЛИЧЕСТВО ИНСТАНСОВ". Что мне с ней делать? Там будет просто написано что очень много byte[], и что?..
Использую VisualVM. Как она может помочь в данной задаче?
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38313374
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymytryПытаюсь делать heap dump, получаю: Dump file is incomplete: file size limit, не знаю смогу ли я его прочесть.

Настойки ограничений в linux скорее всего. Какой размер кучи?

DymytryДаже если смогу - насколько я понимаю это просто таблица вида "ТИП ДАННЫХ - КОЛИЧЕСТВО ПАМЯТИ ИМ ЗАНЯТОЕ - КОЛИЧЕСТВО ИНСТАНСОВ". Что мне с ней делать? Там будет просто написано что очень много byte[], и что?..
Использую VisualVM. Как она может помочь в данной задаче?
Помимо размеров и количества, там есть дерево объектов. В этом дереве правым кликом что-то типа Nearest GC Roots или Find GC Roots. VisualVM покажет что именно мешает выбранному объекту быть собраным.
Поэтому нужно сначала по количеству объектов и их размеру вычислить наиболее подозрительные, потом найтих их в списке экземпляров класса и там уже анализировать дерево. Я где-то тут на форуме писал более подробный алгоритм, можено поискать по фразе GC Roots.
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38313918
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

похоже проблема проще: не хватило места на диске. А можно как-то ограничить heap dump?

Вот мой созданный файл: 5227057152 Jun 27 20:18 java_pid16128.hprof, заданный при запуске размер heap - -Xmx8196m -Xms8196m, то есть что получается, чтобы записать в heap dump 8gb heap надо те же 8gb?
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38313927
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dymytryпохоже проблема проще: не хватило места на диске. А можно как-то ограничить heap dump?
Вот мой созданный файл: 5227057152 Jun 27 20:18 java_pid16128.hprof, заданный при запуске размер heap - -Xmx8196m -Xms8196m, то есть что получается, чтобы записать в heap dump 8gb heap надо те же 8gb?
Чем же вы 8Гиг засрать умудрились??? Народ пишет что VisualVM не осилит такую большую кучу. Нужно брать комерческие профайлеры, или анализировать из командной строки, но это ещё то удовольствие.
Или попробовать воспроизвести проблему на меньшей куче. Возможно?
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38313948
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧем же вы 8Гиг засрать умудрились???
Это хочется выяснить :)

Вот еще что непонятно: я подключаюсь к своей программе через jstatd и наблюдаю ее кучу. Однако никаких шевелений там нет - она всегда около 5gb. Этот способ ненадежен?
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38314265
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите что вы храните в размере 5ГБ? и почему не воспользовались inmemory db (тот же redis), которые однозначно лучше для хранения кучи данных?
и поизучайте логи GC заодно
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38314427
Dymytry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,
запускается нагрузочный клиент для одного приложения. А что искать в логах GC?
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38314480
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DymytryPenkov Vladimir,
запускается нагрузочный клиент для одного приложения. А что искать в логах GC?

сколько по времени чистится ваши 5гиг.

не, если это чисто для тестов, то как бы фиг с ним
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38314481
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лог ГЦ вам максимум скажет то, что вам уже известно - приложение требует больше памяти чем оно освобождает.

Вообще хип 100 гигов можно засрать, если приложение не справляется с поступающими запросами и никаких средств для обработки невозможной нагрузки в нем не предусмотрено (к примеру все запросы выстраиваются в бесконечную очередь, а не убиваются, когда наступает какой-то предел.)
Вообще говоря, нужно включить тест на и начать наблюдать ситуацию(по мере этого делать снимки текущего состояния) т.к. скорее всего ситуация уже будет видна сразу же, но числа будут чуть меньше. А по анализу сделанных снимков сразу будет видно кто и где скапливается.
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38314486
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже если это банальная утечка памяти(а не то, что приложение нагружается выше своего предела), то под нагрузкой она сразу вылезет и по сравнению снимков кучи теми же стандартными тузами.
...
Рейтинг: 0 / 0
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
    #38314783
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНарод пишет что VisualVM не осилит такую большую кучу. Нужно брать комерческие профайлеры, или анализировать из командной строки, но это ещё то удовольствие. mat c 8Gb дампами справляется
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]