- - PR -
オブジェクトプロファイリングについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-09 21:46
こんばんは。
以下の記事に、「オブジェクトプロファイリングの実施」があります。 http://www.atmarkit.co.jp/fjava/rensai4/troublehacks05/troublehacks05_1.html ここでは、JVM標準のHPROFを使用しているとのことですが、 実際にHPROFを使用する場合には、クラスを指定する必要があります。 この記事では、問題となったクラスがなぜ判明したのかが 記載されていません。 実際に調査する場合は、HPROFを実行するクラスをどう見つけるのでしょうか? Tomcatの起動クラス(Bootstrap?)を設定するのでしょうか? また、記事中にある、「図2 改善前のGCログ」はどうやって 表示させたものなのでしょうか? | ||||||||
|
投稿日時: 2007-09-11 11:14
その記事で紹介されている「HPROF プロファイラエージェント」をみるとわかりますが、 特定のクラス指定は必要ありません。 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/jvmpi/jvmpi.html#hprof 個人的にはHPROFはオーバヘッドが大きすぎて解析しづらいように思います。
GCViewerでしょう。 http://www.tagtraum.com/gcviewer.html | ||||||||
|
投稿日時: 2007-09-11 21:50
返信ありがとうございます。
HPROFのコマンドでは、 java -Xrunhprof:heap=sites ToBeProfiledClass のようになっています。 この、「ToBeProfiledClass」には、何を指定すればよろしいのでしょうか? > 個人的にはHPROFはオーバヘッドが大きすぎて解析しづらいように思います。 ちなみにですが、sscさんは、どのようなソフトで解析していらっしゃるのでしょうか? よろしければ、参考までに、お聞かせください。 | ||||||||
|
投稿日時: 2007-09-12 10:33
実行クラスファイルでよいと思います。
私はHP-UXのJavaを使うことが多いのですが、JVMのHeapDump機能を使っています。 http://www.hp.com/products1/unix/java/infolibrary/prog_guide/hotspot.html#-XX:+HeapDump HPROFの結果と比較してthread infoやtrace infoの情報は含んでいませんが、Dump取得時以外のオーバヘッドはありません。 #HPjmeterというツールを使うとLive HeapDump機能で比較的簡単にオブジェクトの解析ができます。しかしやはりHP-UXに限られますが。 | ||||||||
|
投稿日時: 2007-09-12 23:10
返信ありがとうございます。
> 実行クラスファイルでよいと思います。 すいません。私の質問の仕方が悪かったと思いますが、 HPROFを実行する際には、 特定のクラスを指定する必要があるということでしょうか? もし、そうだとすれば問題があるクラスまでたどり着くのが 難しいのかなぁと思っています。 > 私はHP-UXのJavaを使うことが多いのですが、JVMのHeapDump機能を使っています。 ご丁寧にありがとうございます。 私の環境では、Apache+Tomcatを使用することがほとんどですが、 参考にしたいと思います。 | ||||||||
|
投稿日時: 2007-09-13 10:08
HPPROFでプロファイリングをするには特定のクラスを指定する必要はなく、 Javaの起動オプションに-Xrunhprofを加えます。 TomcatならばCATALINA_OPTSまたはJAVA_OPTSに-Xrunhprofオプションを加 えるのが一般的でしょう。 | ||||||||
|
投稿日時: 2007-09-13 23:24
返信ありがとうございます。
> Javaの起動オプションに-Xrunhprofを加えます。 現状動作環境が手元にありませんが、明日以降確認したいと思います。 何度も返信ありがとうございました。 |
1