Анализ heapdump Java находит источник для созданных объектов
Я анализирую дамп кучи с помощью jvisualvm. Из отчета я вижу классы, количество экземпляров и размер.
То, что я хотел знать, - это источник (экземпляр которого создан) этих объектов. Для данного объекта, если бы я мог знать все исходные классы и количество экземпляров, созданных каждым из этих классов, я думаю, было бы легко идентифицировать плохого кандидата.
Это вообще возможно? Если да, то есть ли какой-либо инструмент лучше, чем другой, для предоставления такой информации?
3 ответа
YourKit обеспечивает отслеживание распределения по размеру и номеру. Вы можете искать определенные классы, созданные и найти горячие точки. Ознакомительная версия бесплатна.;)
Пытаться:
http://dr-brenschede.de/bheapsampler для простого для понимания резюме или http://www.eclipse.org/mat для более подробного анализа
эти инструменты точно соответствуют тому, что вы ищете
Ты пробовал
jhat <yourdump>
при условии, что ваши творения имеют форму:
частный бла бла = новый бла ();
Для каждого экземпляра вы можете увидеть, кто содержит ссылку на него. Он также предоставляет мощный язык запросов [OQL]. Смотрите пример: jhat OQL AND в предложении where
Но если вы создали его где-то еще и просто передали его для хранения другим полем класса, вы не сможете найти его из дампа памяти [любым инструментом], поскольку это всего лишь снимок.