Как проверить Java-приложение на наличие узких мест в производительности?

Я просматриваю большое java-приложение, чтобы увидеть, есть ли какие-либо узкие места в производительности. Настоящая проблема в том, что я не могу определить проблемы с производительностью для какого-либо отдельного модуля. Все приложение само по себе медленное.

Есть ли какой-нибудь инструмент / методика, которые я могу использовать, чтобы помочь мне в этом?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
11
0
16 830
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Попробуйте использовать профилировщик в своем работающем коде. Это должно помочь вам определить узкие места. Попробуйте jprofiler или Профилировщик Netbeans

Если вы работаете на Java 6, вы можете использовать поставляемые инструменты мониторинга

Для тестирования / разработки вы можете бесплатно загрузить Oracle JRockit Mission Control с сайта это. (Требуется вход в систему, но учетные записи могут быть настроены с любым адресом электронной почты)

Документы Здесь. Это позволит вам обнаруживать горячие точки, утечки памяти и многое другое.

Я часто достаточно доволен использованием Java -Xprof. Это дает вам отсортированный список функций, в которых ваш код проводит большую часть своего времени.

YourKit - отличный профилировщик java (не бесплатный).

Как видно из Как я могу профилировать код C++, работающий в Linux?, наиболее статистически значимым подходом является использование профилировщика стека.

Что ж, Java работает в JVM, поэтому получение стека, полезного для кода C, нам не будет полезно (он получит материал JVM, а не ваш код). К счастью, в Java есть jstack! http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstack.html

Это даст вам кучу потоков, таких как GarbageCollector. Не беспокойтесь об этом, просто посмотрите, где находятся ваши темы.

Другие вопросы по теме