Недавно я копался в дампах кучи JVM, используя Eclipse MAT. Мне это нравится, но больше всего я использую функцию Дерево доминаторов. Пример скриншота Eclipse:
В любом случае, я обнаружил, что большую часть времени я обычно получаю наибольшую ценность, просто просматривая эту таблицу и получая первые несколько записей. Поскольку время оборота для получения этого составляет:
- Создать дамп кучи (
jcmd <pid> GC.heap_dump
) - Загрузите/извлеките дамп кучи в определенное место (MAT не установлен на наших серверах)
- Запустите инструмент Eclipse MAT
ParseHeapDump.sh
для построения различных деревьев. - Откройте MAT, щелкните значок Dominator Tree.
- Анализировать
Есть ли способ получить эту эквивалентную информацию от работающей JVM программным путем? Я хотел бы запустить какой-нибудь скрипт gather_dominators.sh <pid>
на хосте и получить Top X Objects из JVM, но я не знаю, с чего начать.
ParseHeapDump.sh
? - person the8472   schedule 06.08.2015