2009-04-01 21 views
10

組み込みJVMプロファイラの出力を表示するツールはありますか?たとえば、次のようにしてJVMを起動します。-jentlib:hprofプロファイリング出力を表示するHPjmeterのようなグラフィカルツール

-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データを監視することができますが、私が展開され、マシンが唯一のintalled JRE(ないJDK)を持っているので、事実の後HPROF生成されたファイルを処理できるソリューションを必要とします。

EDIT:非常に参考HPjmeterを開発者がheap=dumpニーズがHPjmeterでのバグが修正されるまで一時的に-agentlibオプションに含まれていることを示す私のquestion on an HP ITRC forumに答えました。この情報はHPjmeterを再び実行可能にしますが、他のツールが分かっているかどうかを確認するために質問を開いたままにします。

EDIT:バージョン4.0.00のHPjmeter(利用可能な05/2009)から、このバグは修正されました。

答えて

0

私はそれがうまくいくことを確信しているわけではありませんが、それはあなたが望む形式でそれを表示するかどうかわかりません...しかし、あなたはVisualVMについて考えましたか?

結果ファイルが開かれると思います。

+1

VisualVMは明らかに、hprofファイルから「ヒープダンプ」情報(プロファイリングデータではない)のみを読み込み、そのファイルを読み込むのをやりとりするように動作します。あなたはこれで成功しましたか?私は本当に何かを探しています> = HPJmeterは動作します:-) –

+0

残念ながら私はまだそれを使用していません...それを認識しています。 Visual VMを使用してプロファイリングを試みたことがありますか(実際にオフラインビューアが必要なように聞こえます)。 – TofuBeer

+0

ええ、確かにローカルでプロファイルするのに使うことのできるさまざまなツールがありますが、hprofファイルをオフラインで表示できるものがあればいいと思います。 HPJmeterは、私がそれを動作させることができれば、近いうちに閉じています。彼らがソースコードを配布したかったのです。 –

6

Your KitのJavaプロファイラは、(私はメモリプロファイリングのためやCPUの場合のみだけでなくわからない)スナップショットをHPROF読み取ることができます。それは無料ではありませんが、これまで私が使っている最高のJavaプロファイラです。結果は明確かつ直感的な方法で提示され、大規模なデータセットでも良好に機能します。ドキュメントもかなり良いです。

+0

ドキュメントではメモリのみをサポートしているようですHPROFファイルの関連部分:http://www.yourkit.com/docs/80/help/hprof_snapshots.jsp - 参考までに感謝します。それは良いプロファイラーのように見えます。 –

0

私はEclipse Memory Analyzerを使用して、さまざまなパフォーマンスの問題を正しく分析しています。まず、EclipseのプロジェクトWebページで説明されているようにツールをインストールします。その後

、あなたは

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

を分析するために、JVMのPIDを知ってダンプファイルを作成することができますそれからちょうど日食で.hprofファイルをインポートします。それは可能性のある問題である可能性があることを指摘するために(私は彼らが通常働かない)試みるいくつかの自動レポートを持っています。

編集:

コメントに答える:あなたは正しいです、それはより多くのJava用のリークファインダーのようなものです。パフォーマンスの問題については、小規模なプロジェクトではJRatと遊んでいます。メソッドごとに時間、メソッドが呼び出された回数、呼び出しの階層などが表示されます。唯一の問題は、わかっている限り、.hprofファイルをサポートしていないことです。

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

VM引数を追加して、あなたのプログラムを実行するよ必要性を、それを使用するには、これはツールによってキャプチャプロファイルのディレクトリを生成します。次に実行する

java -jar shiftone-jrat.jar 

トレースを開きます。簡単なツールであっても、役に立つと思う。

+1

私はずっと前にMATと遊んでいましたが、パフォーマンスプロファイリングの部分ではなく、hprofファイルのHEAP DUMP部分だけを解析するということが思い出されます。彼らはその機能を追加しましたか? –

0

hprof=samplesまたは​​の出力を表示および分析するために、私はPerfAnalを良い結果で使用しました。 GUIは少しスパートですが、非常に便利です。

PerfAnalは無料でダウンロードできます(本書の最初の例は、のJavaプログラミングです)。詳細とダウンロード用

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

: は、こちらの記事を参照してください。

通常はちょうどあなたが大のhprofファイルに対して-Xmxをいじる必要があるかもしれません

java -jar PerfAnal.jar hprof.java.txt 

を実行することができます。

関連する問題