組み込みの 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)
(なぜ彼らは無料の製品のバイトコードを難読化するのでしょうか?!)
このことから、次の 2 つの疑問が生じます。
- この HPjmeter エラーの原因を知っている人はいますか? (編集:はい - 以下を参照)
- hprof ファイルを読み取るために他にどのようなツールがありますか? そして、なぜSunからは何もないのですか(ありますか)?
Eclipse TPTPやその他のツールが JVMTI データをオンザフライで監視できることは知っていますが、デプロイされたマシンには JRE (JDK ではなく) しかインストールされていないため、生成された hprof ファイルを後で処理できるソリューションが必要です。
編集: 非常に役立つ HPjmeter 開発者が、HP ITRC フォーラムでの私の質問に回答し、 HPjmeter のバグが修正されるまで一時的にオプションheap=dump
に含める必要があることを示しました。-agentlib
この情報により、HPjmeter は再び実行可能になりますが、他のツールについて知っている人がいないかどうかを確認するために、質問を開いたままにします。
編集: HPjmeter のバージョン 4.0.00 (2009 年 5 月に利用可能) の時点で、このバグは修正されています。