Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Я бы посмотрел на анализатор памяти eclipse. Этот инструмент замечательный, и я посмотрел несколько куч Gig с этим инструментом. Самое приятное в этом инструменте - это создание индексов на дампе, так что это не все в памяти сразу.

Ответ 2

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

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

Ответ 3

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

Ответ 4

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