Анализ heapdump Java находит источник для созданных объектов

Я анализирую дамп кучи с помощью jvisualvm. Из отчета я вижу классы, количество экземпляров и размер.

То, что я хотел знать, - это источник (экземпляр которого создан) этих объектов. Для данного объекта, если бы я мог знать все исходные классы и количество экземпляров, созданных каждым из этих классов, я думаю, было бы легко идентифицировать плохого кандидата.

Это вообще возможно? Если да, то есть ли какой-либо инструмент лучше, чем другой, для предоставления такой информации?

3 ответа

Решение

YourKit обеспечивает отслеживание распределения по размеру и номеру. Вы можете искать определенные классы, созданные и найти горячие точки. Ознакомительная версия бесплатна.;)

Пытаться:

http://dr-brenschede.de/bheapsampler для простого для понимания резюме или http://www.eclipse.org/mat для более подробного анализа

эти инструменты точно соответствуют тому, что вы ищете

Ты пробовал

jhat <yourdump>

при условии, что ваши творения имеют форму:

частный бла бла = новый бла ();

Для каждого экземпляра вы можете увидеть, кто содержит ссылку на него. Он также предоставляет мощный язык запросов [OQL]. Смотрите пример: jhat OQL AND в предложении where

Но если вы создали его где-то еще и просто передали его для хранения другим полем класса, вы не сможете найти его из дампа памяти [любым инструментом], поскольку это всего лишь снимок.

Другие вопросы по тегам