Какие инструменты доступны для просмотра результатов встроенного профилировщика JVM? Например, я запускаю свою JVM с помощью:
-agentlib:hprof=cpu=times,thread=y,cutoff=0,format=a,file=someFile.hprof.txt
Это генерирует вывод в формате hprof ( "JAVA PROFILE 1.0.1" ).
У меня был успех в прошлом, используя HPjmeter для разумного просмотра этих выходных файлов. Однако по какой-либо причине файлы, созданные с использованием текущей версии Sun JVM, не загружаются в текущей версии HPjmeter:
java.lang.NullPointerException
at com.hp.jmeter.f.jb.a(Unknown Source)
at com.hp.jmeter.f.a.a(Unknown Source)
at com.hp.c.a.j.z.run(Unknown Source)
Exception in thread "HPeprofDataFileReaderThread" java.lang.AssertionError: null pointer exception from loader
at com.hp.jmeter.f.a.a(Unknown Source)
at com.hp.c.a.j.z.run(Unknown Source)
(Почему они запутывают байт-код для бесплатного продукта?!)
Из этого вытекают два вопроса:
- Кто-нибудь знает причину этой ошибки HPjmeter? ( EDIT: Да - см. ниже)
- Какие еще существуют инструменты для чтения hprof файлов? И почему нет от Солнца (есть)?
Я знаю Eclipse TPTP, а другие инструменты могут контролировать данные JVMTI "на лету", но мне нужно решение, которое может обрабатывать сгенерированные файлы hprof после того, как развернутая машина имеет только JRE (не JDK).
EDIT. Очень полезный разработчик HPjmeter ответил на мой вопрос на форуме HP ITRC, указав, что heap=dump
необходимо временно включить в параметры -agentlib
, пока не будет исправлена ошибка в HPjmeter. Эта информация делает HPjmeter жизнеспособной снова, но я все равно оставил бы вопрос открытым, чтобы узнать, знает ли кто-нибудь о других инструментах.
EDIT: с версии 4.0.00 HPjmeter (доступно 05/2009) эта ошибка исправлена.