высокопроизводительный профилировщик Java

Я вижу, что есть куча вопросов о «рекомендациях java-профилировщика», на которые уже ответили здесь. Хотя мой случай немного специфичен.

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

Я использую Tomcat 6.0.29 на JDK 1.6.0_20 в Linux.

Я бы предпочел бесплатный профилировщик с открытым исходным кодом. Но если есть коммерческий, который явно является лучшим выбором, то это тоже будет хорошо.


person Mike W    schedule 31.08.2010    source источник
comment
Какое профилирование вам нужно? Чем детальнее информация, тем более инвазивным является профайлер.   -  person skaffman    schedule 01.09.2010


Ответы (3)


Если не вдаваться в полемику с профилировщиками (вы можете поискать это в Google), выборка ЦП обычно считается одним из наименее ресурсоемких методов профилирования. Это очень важно, если вы профилируете приложение в рабочей среде.

Прочтите следующий пост SO: - the-best">Какой инструмент профилирования Java вы используете и какой инструмент считаете лучшим?

Вы даже можете просто использовать JDK и инструменты hprof, хотя даже базовый профилировщик, вероятно, будет лучше.

Хитрость будет заключаться в том, чтобы ограничить количество профилируемых классов, как говорит Скафман.

person The Alchemist    schedule 31.08.2010
comment
Я собираюсь попробовать Yourkit. Их сборки с ранним доступом можно использовать бесплатно, и они, кажется, имеют простую поддержку использования пользовательского интерфейса профилирования Windows, подключающегося к JVM на сервере Linux. - person Mike W; 02.09.2010

Взгляните на jvisualvm в JDK.

Он может подключаться к запущенному процессу как локально, так и по сети (но с ограниченной функциональностью) и позволяет выполнять профилирование как для ЦП, так и для памяти. Взгляните на http://blip.tv/file/1582849.

person Thorbjørn Ravn Andersen    schedule 31.08.2010
comment
Это выглядит интересно, но мне нужно профилировать по сети, и похоже, что jvisualvm не может этого сделать. - person Mike W; 01.09.2010
comment
Нет, но можете ли вы запустить X-сервер локально (например, knoppix в vmware), тогда вы можете запустить visualvm удаленно с локальным дисплеем. - person Thorbjørn Ravn Andersen; 01.09.2010
comment
Вам даже не нужно этого делать. В Netbeans хорошо интегрирована VisualVM, и все, что вам нужно, это пакет удаленного профилирования Netbeans, установленный на машине, которую вы хотите профилировать. У NB есть мастер, который расскажет вам, как запустить удаленное приложение (в основном добавьте -agentpath:file arg). - person The Alchemist; 02.09.2010
comment
Хорошо знать. Я не очень хорошо знаком с Netbeans. Работает ли пакет удаленного профилирования на JVM других производителей? - person Thorbjørn Ravn Andersen; 02.09.2010
comment
В Netbeans 6.9 он работает для JVM на базе Sun в Windows, Linux, Solaris и OS X. - person Thorbjørn Ravn Andersen; 28.01.2011

Я предпочитаю Java Flight Recorder. Он почти не влияет на производительность и имеет приятный графический интерфейс. Добавьте параметры JVM

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
-XX:StartFlightRecording=name=test,filename=test.jfr,dumponexit=true 

и откройте запись с помощью JMC.

person jun    schedule 26.08.2015