- PR -

オブジェクトプロファイリングについて

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2007/07/18
投稿数: 26
投稿日時: 2007-09-09 21:46
こんばんは。

以下の記事に、「オブジェクトプロファイリングの実施」があります。

http://www.atmarkit.co.jp/fjava/rensai4/troublehacks05/troublehacks05_1.html

ここでは、JVM標準のHPROFを使用しているとのことですが、
実際にHPROFを使用する場合には、クラスを指定する必要があります。

この記事では、問題となったクラスがなぜ判明したのかが
記載されていません。

実際に調査する場合は、HPROFを実行するクラスをどう見つけるのでしょうか?

Tomcatの起動クラス(Bootstrap?)を設定するのでしょうか?


また、記事中にある、「図2 改善前のGCログ」はどうやって
表示させたものなのでしょうか?




ssc
会議室デビュー日: 2007/08/10
投稿数: 6
投稿日時: 2007-09-11 11:14
引用:

ここでは、JVM標準のHPROFを使用しているとのことですが、
実際にHPROFを使用する場合には、クラスを指定する必要があります。



その記事で紹介されている「HPROF プロファイラエージェント」をみるとわかりますが、
特定のクラス指定は必要ありません。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/jvmpi/jvmpi.html#hprof

個人的にはHPROFはオーバヘッドが大きすぎて解析しづらいように思います。

引用:

また、記事中にある、「図2 改善前のGCログ」はどうやって
表示させたものなのでしょうか?



GCViewerでしょう。
http://www.tagtraum.com/gcviewer.html
未記入
常連さん
会議室デビュー日: 2007/07/18
投稿数: 26
投稿日時: 2007-09-11 21:50
返信ありがとうございます。

HPROFのコマンドでは、
java -Xrunhprof:heap=sites ToBeProfiledClass

のようになっています。
この、「ToBeProfiledClass」には、何を指定すればよろしいのでしょうか?


> 個人的にはHPROFはオーバヘッドが大きすぎて解析しづらいように思います。

ちなみにですが、sscさんは、どのようなソフトで解析していらっしゃるのでしょうか?
よろしければ、参考までに、お聞かせください。


ssc
会議室デビュー日: 2007/08/10
投稿数: 6
投稿日時: 2007-09-12 10:33
引用:

この、「ToBeProfiledClass」には、何を指定すればよろしいのでしょうか?



実行クラスファイルでよいと思います。

引用:

> 個人的にはHPROFはオーバヘッドが大きすぎて解析しづらいように思います。

ちなみにですが、sscさんは、どのようなソフトで解析していらっしゃるのでしょうか?
よろしければ、参考までに、お聞かせください。



私は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/07/18
投稿数: 26
投稿日時: 2007-09-12 23:10
返信ありがとうございます。

> 実行クラスファイルでよいと思います。

すいません。私の質問の仕方が悪かったと思いますが、
HPROFを実行する際には、
特定のクラスを指定する必要があるということでしょうか?

もし、そうだとすれば問題があるクラスまでたどり着くのが
難しいのかなぁと思っています。


> 私はHP-UXのJavaを使うことが多いのですが、JVMのHeapDump機能を使っています。

ご丁寧にありがとうございます。

私の環境では、Apache+Tomcatを使用することがほとんどですが、
参考にしたいと思います。

ssc
会議室デビュー日: 2007/08/10
投稿数: 6
投稿日時: 2007-09-13 10:08
引用:

HPROFを実行する際には、
特定のクラスを指定する必要があるということでしょうか?



HPPROFでプロファイリングをするには特定のクラスを指定する必要はなく、
Javaの起動オプションに-Xrunhprofを加えます。
TomcatならばCATALINA_OPTSまたはJAVA_OPTSに-Xrunhprofオプションを加
えるのが一般的でしょう。
未記入
常連さん
会議室デビュー日: 2007/07/18
投稿数: 26
投稿日時: 2007-09-13 23:24
返信ありがとうございます。

> Javaの起動オプションに-Xrunhprofを加えます。

現状動作環境が手元にありませんが、明日以降確認したいと思います。

何度も返信ありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)