Как посчитать, сколько раз какой класс использовался во время выполнения Java-приложения - PullRequest
1 голос
/ 16 декабря 2011

Я думаю, что мне нужно настроить какой-нибудь профилировщик или каким-то образом настроить загрузчик классов, чтобы сохранить эту информацию.Вот что мне нужно: когда запускается JVM, мне нужно выполнить процесс, который отслеживает загрузку java-файлов загрузчиком классов.Во всех потоках (и процессах тоже, но это другая JVM).

Так что в выводе мне нужно иметь информацию, сколько раз какой класс использовался.

Можете ли вы предложить некоторые инструментыа примеры конфигурации для них?Лучше быть инструментом командной строки и бесплатно.

Ответы [ 3 ]

2 голосов
/ 16 декабря 2011

Вы должны использовать Java Profiler. Некоторые варианты с открытым исходным кодом здесь .

1 голос
/ 16 декабря 2011

Профилировщики, безусловно, предоставят вам эту информацию, но вам нужно запустить JVM в режиме профилирования, для которого есть затраты на производительность.

Если вы планируете собирать эту информацию по требованию из производственных систем,вам, вероятно, понадобится инструктировать интересующие вас классы / пакеты с помощью JMX.Затем вы можете использовать что-то вроде HP OpenView или Nagios для мониторинга значений.http://www.ibm.com/developerworks/java/library/j-jtp09196/index.html говорит о том, как начать работу в JMX.Возможно, JVM уже собирает некоторые из этих вещей, я не знаю.

Недостатком подхода JMX является то, что вам нужно заранее знать, что вы хотите собрать, и соответствующим образом обработать целевые классы.

0 голосов
/ 17 декабря 2011

Если вам просто нужно посмотреть, какие классы были загружены, вы можете запустить с помощью

java -verbose:class com.your.Class
...