То, что вы ищете, это профилирование :
В программной инженерии профилирование («профилирование программы», «профилирование программного обеспечения») - это форма динамического анализа программы, которая измеряет, например, пространство (память) или временную сложность программы, использование определенных инструкций или частоту и продолжительность функциональных вызовов. Наиболее распространенное использование профилирования информации - это помощь в оптимизации программы.
Есть несколько таких приложений. Иногда они встроены в саму IDE. NetBeans Ide - это один из таких инструментов, в который встроен профилировщик .
Другим таким инструментом является визуальный VM .
Профилировщики могут работать по-разному - и нужно знать о различиях. Один из подходов - каждую секунду делать снимок запущенных потоков и видеть, какие методы в данный момент вызываются для каждого потока. Это использует выборку того, что там.
Другой подход заключается в том, чтобы инструктировать байт-код Java, чтобы сообщать время запуска и остановки другому приложению.
Написание профилировщика не очень сложно для одного опытного Java. У IBM есть статья о написании вашего собственного профилировщика (с исходным кодом!). Этот основан на Интерактивном Профилировщике Java .
Существует множество профилировщиков - как бесплатных, так и коммерческих (как насчет профилировщика, подключенного к запущенным экземплярам JVM, который может сообщить вам (электронная почта или другое уведомление), когда конкретные методы превышают ожидаемое время выполнения? Или подключен к программа, которая сообщает, когда веб-запросы заняли слишком много времени - сохранен ли исторический профиль для этого запроса для последующей проверки?). Вам просто нужно знать, что вы ищете, чтобы начать их искать и идти оттуда.
Получив профилировщик, вы приступаете к интерпретации результатов профилирования .