Как узнать, какой метод занимает много времени?
Один из моих компонентов занимает слишком много времени для выполнения. Он вызывает множество услуг, которые, в свою очередь, называет многие методы 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
Не смотрите на это как на время измерения, чтобы найти проблему.
Используйте его медлительность, чтобы открыть его.
Просто используйте тот же метод, что и если бы это был бесконечный цикл.
То есть, приостанавливайте его несколько раз, пока он медленный, и каждый раз проверяйте стек вызовов каждого потока.
Винные методы и строки кода появятся на нескольких образцах.
Проверьте последний абзац этого сообщения.
Подробнее о том, как это работает.