Загрузка большого hprof в jhat - PullRequest
       49

Загрузка большого hprof в jhat

25 голосов
/ 02 декабря 2009

У меня есть файл Hprof объемом 6,5 ГБ, который был выгружен 64-разрядной JVM с использованием параметра -XX:-HeapDumpOnOutOfMemoryError. Я установил его на 64-разрядную машину емкостью 16 ГБ и пытаюсь перевести его в jhat, но памяти не хватает. Я попытался передать аргументы jvm для минимальных настроек, но он отклоняет любой минимум и, кажется, ему не хватает памяти перед достижением максимума.

Кажется глупым, что из-за недостатка памяти jvm сбрасывает кучу, настолько большую, что ее нельзя загрузить в коробку с вдвое большим количеством оперативной памяти. Есть ли способы запустить этот анализ или, возможно, амортизировать анализ?

Ответы [ 4 ]

21 голосов
/ 03 декабря 2009

Я бы взглянул на анализатор памяти затмения . Этот инструмент великолепен, и я посмотрел несколько куч Gig с этим инструментом. Хорошая особенность этого инструмента в том, что он создает индексы в дампе, поэтому он не находится в памяти сразу.

20 голосов
/ 03 декабря 2010

Используйте команду, эквивалентную jhat -J-d64 -J-mx16g myheap.hprof, для запуска jhat, то есть она запустится в 64-битном режиме с максимальным размером кучи 16 гигабайт.

Если JVM на вашей платформе по умолчанию работает в 64-битном режиме, то опция -J-d64 не требуется.

5 голосов
/ 15 сентября 2011

Мне пришлось загрузить файл hprof объемом 11 ГБ, и я не смог использовать анализатор памяти Eclipse. В итоге я написал программу, уменьшающую размер файла hprof путем случайного удаления информации об экземпляре. Как только размер файла hprof уменьшился до 1 ГБ, я мог открыть его с помощью анализатора памяти Eclipse и получить представление о причинах утечки памяти.

0 голосов
/ 03 декабря 2009

Какие флаги вы передаете Jhat? Убедитесь, что вы находитесь в 64-битном режиме, и вы устанавливаете размер кучи достаточно большим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...