2010-05-25 7 views
4

Есть ли инструмент, который можно было бы использовать для анализа создаваемых объектов между двумя отдельными запусками мусора (= количество созданных объектов и их тип)?Анализ объектов, сгенерированных Java-приложением между GCs

Heapdumps действительно не работают здесь, поскольку они выполняют GC, когда они вызывают (или, по крайней мере, это то, что я наблюдал каждый раз до сих пор), и я хочу посмотреть, какие объекты собираются GC, а не какие объекты оставлены после запуска GC, если это имеет смысл.

+1

Для некоторых объектов я переопределяю метод окончательной доработки и добавляю заявление о печати, что оно является gc'ed.i, что полезно, когда я подозреваю определенные объекты. Конечно, не полезно, если вас много. – Inv3r53

+0

Вы имеете в виду, какие конкретные экземпляры собираются и когда или сколько экземпляров каждого класса собираются в определенных событиях GC или что-то еще? и какой JVM? Я не знаю, как это сделать с помощью hotspot, однако ISTR jrockit (через командный центр) сообщает о том, что собирается каждый раз. – Matt

ответ

2

Во-первых, когда вы всегда соблюдать полную сборку мусора перед каждой дампа кучи, вы, вероятно, назвал это так:

jmap -histo:live $PID 

Если это так, просто оставить из :live, который будет подавлять явный мусор коллекция.

Кроме того, Sun JVM знает следующие параметры командной строки:

-XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC 

Это должно быть довольно много, что вы хотите.

Смежные вопросы