Запуск Java-профилировщика HPROF программно на лету - PullRequest
8 голосов
/ 23 октября 2011

Я пытаюсь выборочно отслеживать / профилировать приложение Java, когда выполняются определенные условия выполнения.Я уже могу выгрузить кучу «на лету», используя HotSpotDiagnosticMXBean , что было весьма полезно.

Я сейчас пытаюсь сделать что-то похожее с профилированием процессора, надеясь на большееэффективно нацелены на конкретные пути кода.У меня есть некоторый опыт работы с командной строкой интерфейс HPROF и профилировщиком NetBeans, но оба должны быть запущены заранее.

Есть ли способ программной активации профилировщика HPROF изнутри работающейприложение?Желательно что-нибудь, что позволило бы мне запускать и останавливать процесс профилирования по желанию?

1 Ответ

1 голос
/ 22 июля 2012

Согласно документации JVMTI , библиотеки собственных агентов, такие как hprof, должны быть загружены очень рано во время инициализации JVM, прежде чем будет выполнен какой-либо байт-код.Так что нет, это невозможно сделать на лету.

Альтернативой может быть повторный запуск процесса Java с измененными параметрами JVM в основной функции, хотя это не тривиально.

...