11

組み込みの 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 つの疑問が生じます。

  1. この HPjmeter エラーの原因を知っている人はいますか? (編集:はい - 以下を参照
  2. hprof ファイルを読み取るために他にどのようなツールがありますか? そして、なぜSunからは何もないのですか(ありますか)?

Eclipse TPTPやその他のツールが JVMTI データをオンザフライで監視できることは知っていますが、デプロイされたマシンには JRE (JDK ではなく) しかインストールされていないため、生成された hprof ファイルを後で処理できるソリューションが必要です。

編集: 非常に役立つ HPjmeter 開発者が、HP ITRC フォーラムでの私の質問に回答し、 HPjmeter のバグが修正されるまで一時的にオプションheap=dumpに含める必要があることを示しました。-agentlibこの情報により、HPjmeter は再び実行可能になりますが、他のツールについて知っている人がいないかどうかを確認するために、質問を開いたままにします。

編集: HPjmeter のバージョン 4.0.00 (2009 年 5 月に利用可能) の時点で、このバグは修正されています。

4

4 に答える 4

6

Kit Java Profiler は、hprof スナップショットを読み取ることができます (メモリ プロファイリングのためだけなのか、CPU のためなのかはわかりません)。無料ではありませんが、私が今まで使った中で最高の Java プロファイラーです。明確で直感的な方法で結果を表示し、大規模なデータ セットで適切に機能します。ドキュメントもかなり良いです。

于 2009-04-02T18:34:53.477 に答える
1

hprof=samplesorの出力を表示および分析するために、hprof=cpuPerfAnal を使用して良好な結果を得ました。GUI は少し質素ですが、非常に便利です。

PerfAnal は無料でダウンロードできます (GPL、もともとは本Java Programming on Linuxのサンプル プロジェクトでした)。この記事を参照してください。

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

詳細とダウンロードについては。

通常、実行するだけです

java -jar PerfAnal.jar hprof.java.txt

大きな hprof ファイルの場合は、-Xmx をいじる必要があるかもしれません。

于 2010-10-05T08:51:28.190 に答える
0

100%動作するかどうかはわかりませんが(動作するように聞こえます)、希望する形式で表示されるかどうかはわかりません...しかし、 VisualVMについて考えたことはありますか?

結果のファイルが開くと思います。

于 2009-04-01T23:19:22.967 に答える
0

私はEclipse Memory Analyzerを使用して、さまざまなパフォーマンスの問題をうまく分析しています。まず、Eclipse のプロジェクト Web ページに記載されているとおりにツールをインストールします。

その後、分析するjvmのpidを知っているダンプファイルを作成できます

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

次に、.hprof ファイルを Eclipse にインポートします。考えられる問題を指摘しようとする自動レポートがいくつかあります (私にとっては通常は機能しません)。

編集:

コメントへの回答: その通りです。Java のリーク ファインダーに似ています。パフォーマンスの問題については、小さなプロジェクトでJRatを試してみました。メソッドごとの消費時間、メソッドが呼び出された回数、呼び出しの階層などが表示されます。唯一の問題は、私の知る限り、.hprof ファイルをサポートしていないことです。それを使用するには、VM 引数を追加してプログラムを実行する必要があります

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

これにより、ツールによってキャプチャされたプロファイルを含むディレクトリが生成されます。次に、実行します

 java -jar shiftone-jrat.jar

そして、トレースを開きます。単純なツールでも、役に立つと思います。

于 2009-04-15T11:49:38.933 に答える