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