|
|
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
День добрый! Имею java.lang.OutOfMemoryError: Java heap space. Навскидку понять какая часть кода ее вызывает я не могу. Вопрос: как найти этот участок? Пытаюсь делать heap dump, получаю: Dump file is incomplete: file size limit, не знаю смогу ли я его прочесть. Даже если смогу - насколько я понимаю это просто таблица вида "ТИП ДАННЫХ - КОЛИЧЕСТВО ПАМЯТИ ИМ ЗАНЯТОЕ - КОЛИЧЕСТВО ИНСТАНСОВ". Что мне с ней делать? Там будет просто написано что очень много byte[], и что?.. Использую VisualVM. Как она может помочь в данной задаче? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2013, 20:46:34 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
DymytryПытаюсь делать heap dump, получаю: Dump file is incomplete: file size limit, не знаю смогу ли я его прочесть. Настойки ограничений в linux скорее всего. Какой размер кучи? DymytryДаже если смогу - насколько я понимаю это просто таблица вида "ТИП ДАННЫХ - КОЛИЧЕСТВО ПАМЯТИ ИМ ЗАНЯТОЕ - КОЛИЧЕСТВО ИНСТАНСОВ". Что мне с ней делать? Там будет просто написано что очень много byte[], и что?.. Использую VisualVM. Как она может помочь в данной задаче? Помимо размеров и количества, там есть дерево объектов. В этом дереве правым кликом что-то типа Nearest GC Roots или Find GC Roots. VisualVM покажет что именно мешает выбранному объекту быть собраным. Поэтому нужно сначала по количеству объектов и их размеру вычислить наиболее подозрительные, потом найтих их в списке экземпляров класса и там уже анализировать дерево. Я где-то тут на форуме писал более подробный алгоритм, можено поискать по фразе GC Roots. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2013, 22:30:54 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, похоже проблема проще: не хватило места на диске. А можно как-то ограничить heap dump? Вот мой созданный файл: 5227057152 Jun 27 20:18 java_pid16128.hprof, заданный при запуске размер heap - -Xmx8196m -Xms8196m, то есть что получается, чтобы записать в heap dump 8gb heap надо те же 8gb? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2013, 12:55:41 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
Dymytryпохоже проблема проще: не хватило места на диске. А можно как-то ограничить heap dump? Вот мой созданный файл: 5227057152 Jun 27 20:18 java_pid16128.hprof, заданный при запуске размер heap - -Xmx8196m -Xms8196m, то есть что получается, чтобы записать в heap dump 8gb heap надо те же 8gb? Чем же вы 8Гиг засрать умудрились??? Народ пишет что VisualVM не осилит такую большую кучу. Нужно брать комерческие профайлеры, или анализировать из командной строки, но это ещё то удовольствие. Или попробовать воспроизвести проблему на меньшей куче. Возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2013, 13:01:25 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЧем же вы 8Гиг засрать умудрились??? Это хочется выяснить :) Вот еще что непонятно: я подключаюсь к своей программе через jstatd и наблюдаю ее кучу. Однако никаких шевелений там нет - она всегда около 5gb. Этот способ ненадежен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2013, 13:17:27 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
подскажите что вы храните в размере 5ГБ? и почему не воспользовались inmemory db (тот же redis), которые однозначно лучше для хранения кучи данных? и поизучайте логи GC заодно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2013, 16:23:57 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
Penkov Vladimir, запускается нагрузочный клиент для одного приложения. А что искать в логах GC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2013, 19:41:03 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
DymytryPenkov Vladimir, запускается нагрузочный клиент для одного приложения. А что искать в логах GC? сколько по времени чистится ваши 5гиг. не, если это чисто для тестов, то как бы фиг с ним ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2013, 22:06:22 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
Лог ГЦ вам максимум скажет то, что вам уже известно - приложение требует больше памяти чем оно освобождает. Вообще хип 100 гигов можно засрать, если приложение не справляется с поступающими запросами и никаких средств для обработки невозможной нагрузки в нем не предусмотрено (к примеру все запросы выстраиваются в бесконечную очередь, а не убиваются, когда наступает какой-то предел.) Вообще говоря, нужно включить тест на и начать наблюдать ситуацию(по мере этого делать снимки текущего состояния) т.к. скорее всего ситуация уже будет видна сразу же, но числа будут чуть меньше. А по анализу сделанных снимков сразу будет видно кто и где скапливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2013, 22:07:59 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
Даже если это банальная утечка памяти(а не то, что приложение нагружается выше своего предела), то под нагрузкой она сразу вылезет и по сравнению снимков кучи теми же стандартными тузами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2013, 22:11:07 |
|
||
|
Как правильно найти причину java.lang.OutOfMemoryError: Java heap space ?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНарод пишет что VisualVM не осилит такую большую кучу. Нужно брать комерческие профайлеры, или анализировать из командной строки, но это ещё то удовольствие. mat c 8Gb дампами справляется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 17:59:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38313306&tid=2129082]: |
0ms |
get settings: |
17ms |
get forum list: |
27ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
56ms |
get topic data: |
20ms |
get forum data: |
6ms |
get page messages: |
105ms |
get tp. blocked users: |
3ms |
| others: | 331ms |
| total: | 581ms |

| 0 / 0 |
