Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ? / 11 сообщений из 11, страница 1 из 1
27.06.2013, 20:46:34
    #38313306
Dymytry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
День добрый!

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

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

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

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

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

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

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

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


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