Графический инструмент, похожий на HPjmeter, для просмотра вывода профилирования -agentlib: hprof - PullRequest
10 голосов
/ 02 апреля 2009

Какие инструменты доступны для просмотра выходных данных встроенного профилировщика 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)

(Зачем им запутывать байт-код для бесплатного продукта?!)

Из этого вытекают два вопроса:

  1. Кто-нибудь знает причину этой ошибки HPjmeter? ( РЕДАКТИРОВАТЬ : Да - см. Ниже )
  2. Какие существуют другие инструменты для чтения файлов hprof? А почему от Солнца нет (есть)?

Я знаю, что Eclipse TPTP и другие инструменты могут отслеживать данные JVMTI на лету, но мне нужно решение, которое может обрабатывать сгенерированные файлы hprof после того, как развернутая машина имеет только JRE ( JDK).

EDIT : очень полезный разработчик HPjmeter ответил на мой вопрос на форуме HP ITRC , указав, что heap=dump необходимо временно включить в опции -agentlib до появления ошибки в HPjmeter исправлен. Эта информация снова делает HPjmeter жизнеспособным, но я все же оставлю вопрос открытым, чтобы узнать, знает ли кто-нибудь о каких-либо других инструментах.

РЕДАКТИРОВАТЬ : Начиная с версии 4.0.00 HPjmeter (доступно 05/2009) эта ошибка была исправлена.

Ответы [ 4 ]

6 голосов
/ 02 апреля 2009

Ваш комплект Java Profiler может читать снимки hprof (я не уверен, что это может быть только для профилирования памяти или для процессора). Это не бесплатно, но, безусловно, лучший Java-профилировщик, который я когда-либо использовал. Он представляет результаты в понятной, интуитивно понятной форме и хорошо работает с большими наборами данных. Документация тоже довольно хорошая.

1 голос
/ 05 октября 2010

Для просмотра и анализа выходных данных hprof=samples или hprof=cpu я использовал PerfAnal с хорошими результатами. Графический интерфейс немного спартанский, но очень полезный.

PerfAnal можно загрузить бесплатно (GPL, первоначально пример проекта в книге Программирование на Java в Linux ) Смотрите эту статью:

http://www.oracle.com/technetwork/articles/javase/perfanal-137231.html

для получения дополнительной информации и загрузки.

Обычно вы можете просто запустить

java -jar PerfAnal.jar hprof.java.txt

Для больших файлов hprof вам может понадобиться использовать -Xmx.

0 голосов
/ 15 апреля 2009

Я использую Eclipse Memory Analyzer для успешного анализа различных проблем с производительностью. Прежде всего, установите инструмент, как описано на веб-странице проекта в Eclipse.

После этого вы можете создать файл дампа, зная pid jvm для анализа

jmap -dump:format=b,file=<filename>.hprof <jvm_pid> 

Затем просто импортируйте файл .hprof в Eclipse. В нем есть некоторые автоматические отчеты, которые пытаются (для меня они обычно не работают) указать, какие могут быть возможные проблемы.

Edit:

Ответ на комментарий: Вы правы, это больше похоже на поиск утечек для Java. Из-за проблем с производительностью я играл с JRat для небольших проектов. Он показывает время, затрачиваемое на метод, количество вызовов метода, иерархию вызовов и т. Д. Единственная проблема заключается в том, что, насколько я знаю, он не поддерживает файлы .hprof. Чтобы использовать его, вам нужно выполнить вашу программу, добавив аргумент VM

-javaagent:<path>/shiftone-jrat.jar

Это создаст каталог с профилем, захваченным инструментом. Затем выполните

 java -jar shiftone-jrat.jar

И открой след. Даже если бы это был простой инструмент, думаю, он мог бы быть полезен.

0 голосов
/ 02 апреля 2009

Я не уверен на 100%, что это будет работать (звучит так, как будет), и я не уверен, что он покажет это в нужном вам формате ... но вы не подумали о VisualVM * 1002? * * * 1003

Я полагаю, что это откроет полученный файл.

...