Мониторинг потребления памяти различными объектами Java - PullRequest
6 голосов
/ 17 сентября 2009

Если у нас есть 300 классов в приложении, можно ли отслеживать, сколько экземпляров каждого класса у нас в данный момент времени? Можно ли узнать, сколько памяти потребляет каждый экземпляр?

Спасибо

Ответы [ 6 ]

3 голосов
/ 17 сентября 2009

JDK 1.6 включает в себя инструмент под названием jvisualvm , который позволяет просматривать много информации о выполняющейся Java-программе, в том числе об использовании памяти, потоках и т. Д. Вы также можете использовать профилировщик для просмотра этого типа. Информация. Профилировщик в NetBeans очень похож на JVisualVM.

2 голосов
/ 17 сентября 2009

Мне лично нравится Yourkit . Он имеет очень хороший интерфейс и поставляется с 30-дневной пробной версией. Детали также довольно обширны.

Документ онлайн-справки *1006* на этом сайте должен помочь вам настроить его для работы.

1 голос
/ 17 сентября 2009

использовать profiler4j или pmd

лично мне нравится profiler4J за простоту использования и простая графика :)

0 голосов
/ 17 сентября 2009

Большинство профилировщиков предоставят вам эту информацию. Я лично знаком с JProfiler , но я ожидаю, что любой достойный профилировщик позволит вам сделать это.

Для более низкотехнологичного решения вы даже можете запустить дамп кучи из своего приложения, а затем просмотреть его с помощью приложения, такого как jhat. Однако интерфейс оставляет желать лучшего, и профилировщики будут гораздо удобнее использовать в любом нетривиальном случае.

Редактировать: здесь - это пример экрана памяти для JProfiler, и вы также можете исследовать цепочку ссылок .

0 голосов
/ 17 сентября 2009

Вы можете использовать профилировщик Java, в зависимости от того, какой веб-контейнер (если это веб-приложение) вы развертываете, вы можете попробовать множество разных профилировщиков: http://java -source.net / open-source / профайлеры

0 голосов
/ 17 сентября 2009

использовать jvisualvm.exe это часть JDK6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...