Если у вас есть приложение Java, которое потребляет процессор, когда оно ничего не делает, как вы определяете, что оно делает?

Я вызываю Java API поставщика, и на некоторых серверах после входа в API JVM входит в цикл опроса с низким приоритетом (загрузка ЦП на 100%). То же приложение на других серверах не демонстрирует такое поведение. Это происходит в WebSphere и Tomcat. Настроить среду сложно, поэтому трудно попробовать что-то вроде профилирования в Eclipse.

Есть ли способ профилировать (или какой-то другой метод проверки) существующее приложение Java, работающее в Tomcat, чтобы выяснить, какие методы выполняются, пока он находится в таком состоянии вращения? Приложение выполняет только один метод, когда оно попадает в это состояние (метод поставщика). Продавец не может повторить поведение (конечно).

Обновить:

Используя JConsole, я смог определить, кто работает и что они делают. Мне потребовалось несколько часов, чтобы понять, почему это происходит. В итоге проблема заключалась в том, что используемый jar API поставщика не полностью соответствовал конфигурации базы данных, которую он использовал. По умолчанию было включено отслеживание и мониторинг производительности на серверах, которые имели небольшое несоответствие в конфигурации. Я использовал другую банку, и все хорошо.

Так что спасибо, Джошуа, за твой ответ. JConsole был чрезвычайно прост в настройке и использовании для мониторинга существующего приложения.

@Cringe - я экспериментировал с некоторыми из предложенных вами вариантов. У меня были некоторые проблемы с настройкой JProfiler, это выглядит хорошо (но дорого). Забегая вперед, мы, не забегая вперед, добавили плагин Eclipse Profiler, и я посмотрю различные профилировщики с открытым исходным кодом для сравнения функциональности.

Ответы на вопрос(8)

Ваш ответ на вопрос