Как узнать, какой метод занимает много времени?

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

Ответы

Ответ 1

Используйте jvisualvm, который должен поставляться с JDK (если я правильно помню). Это графический интерфейс для вашего JVM и имеет действительно приятные функции. Проверьте его features есть и скриншоты...

И вы можете выполнить следующие шаги, чтобы интегрировать его в качестве запуска в eclipse Шаги по интеграции в eclipse

Ответ 2

Вы можете использовать Java Profiler в среде IDE NetBeans.

Посмотрите здесь: http://netbeans.org/features/java/profiler.html

Java VisualVM - еще одна альтернатива: http://java.net/projects/visualvm/content/. Вы можете прикрепить его к любой запущенной программе Java, включая те, которые вы запускаете через Eclipse.

Ответ 3

Не смотрите на это как на время измерения, чтобы найти проблему.

Используйте его медлительность, чтобы открыть его. Просто используйте тот же метод, что и если бы это был бесконечный цикл.

То есть, приостанавливайте его несколько раз, пока он медленный, и каждый раз проверяйте стек вызовов каждого потока. Винные методы и строки кода появятся на нескольких образцах. Проверьте последний абзац этого сообщения.

Подробнее о том, как это работает.