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