Какова нагрузка на память для анализа кучи с помощью jhat?
jhat - отличный инструмент для анализа дампов Java-кучи, но для больших кучи легко тратить много времени. Дайте Jhat кучу времени выполнения, слишком маленькую, и это может занять 15 минут, чтобы выйти из строя и не хватило памяти.
То, что я хотел бы знать: есть ли практическое правило относительно того, сколько кучи -Xmx я должен дать jhat в зависимости от размера файла heapdump? Только учитывая двоичные дампы кучи на данный момент.
Некоторые очень ограниченные эксперименты показывают, что он по крайней мере в 3-4 раза больше размера дампа кучи. Мне удалось проанализировать файл с кучей в три гигабайта с помощью -J-mx12G.
У кого-нибудь еще есть более убедительные экспериментальные данные или понимание того, как jhat представляет объекты кучи во время выполнения?
Точки данных:
- эта тема указывает на 5-кратную нагрузку, но мои эксперименты на поздних моделях jhats (1.6.0_26) показывают, что это не так уж плохо
- эта тема указывает на ~10x накладные расходы
- коллега поддерживает теорию 10x: файл-куча объемом 2,5 ГБ завершается с помощью -J-mx23G
- еще один коллега получил дамп объемом 6,7 ГБ для работы с кучей 30 ГБ для издержек 4,4 раза.