<Insert Picture Here>




JRockit 解析ツールの紹介

日本オラクル(株) カスタマーサービス統括本部
テクニカルアナリスト 横澤 潤
2009年4月14日
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。ま
た、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき
ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約
)する...
Agenda

• JRockit とは?
• JRockit Ctrl-Break ハンドラの活用
  • Ctrl-Break ハンドラの使い方と、Javaヒープ内のメモリリークオブジ
    ェクトの特定方法について紹介します。
• JR...
JRockit とは?




              Copyright© 2009, Oracle. All rights reserved.   4
JRockit とは?
• 概要
  • Oracleが提供&サポートするJava SE完全準拠のJVM
  • サーバサイド用途専用に設計された高信頼性のJVM
    ※現在はクライアントサイド用途にも対応
  • Intelアーキテクチャ...
JRockit Ctrl-Break ハンドラの活用




             Copyright© 2009, Oracle. All rights reserved.   6
Ctrl-Break ハンドラとは?

• JRockit の管理機能を利用する組み込み診断ツール

• 効用
 • 標準出力をリダイレクトしていなくても、スレッドダンプをファイルに
   残せる
 • verbose ログの出力を再起動なしに...
Ctrl-Break ハンドラの使い方

1. JRockit プロセスのカレントディレクトリにコマンドを記載し
   たファイルを準備する
 • WebLogic Server であればドメインディレクトリ直下
 • “ctrlhandler...
便利なコマンドの紹介

• print_object_summary
  • ヒープで多数を占めているオブジェクトを表示する
    (GC実行後の状況を表示)
• print_memusage
  • ネイティブ部分も含めたメモリの使用量を表...
Javaヒープ内のメモリリークオブジェクトの調査

• “ctrlhandler.act” ファイルの例

   # My configuration(2006/7/31)
   set_filename filename=memusage.t...
Javaヒープ内のメモリリークオブジェクトの調査
                                                                 凡例 : :
                         ...
Ctrl-Break ハンドラによるメモリ監視の利点

• GUI ベースのツール(Memory Leak Detector)と異なり、
  定期的な自動実行を行いやすい
 • 時系列に沿ってデータが取得できるので、メモリリークしている
   ...
Ctrl-Breakハンドラ デモ
                                                            DEMO

• 簡単なメモリリーク Java Application の動作確認



...
簡単なメモリリーク Java Application の動作確認
                                                                     DEMO

• 内容
  • デモでは、...
簡単なメモリリーク Java Application の動作確認
Ctrl-Breakハンドラで、 print_object_summary 情報を採取した結果
                                         ...
簡単なメモリリーク Java Application の動作確認
public class WordCount {                                                              DEM...
JRockit Mission Control 概要




               Copyright© 2009, Oracle. All rights reserved.   17
JRockit Mission Control 概要
• JRockit 専用のGUI 運用監視ツール
  • Java アプリなので、Java が動作する環境であれば使用可
    能
  • TCP/IP ベースのプロトコルでリモートのJR...
JRockit Mission Control デモ
                                                              DEMO

• Ctrl-Break ハンドラのサンプルを、JRo...
参考資料

• JRockit オンラインマニュアル
  • http://otndnld.oracle.co.jp/document/products/jrockit/webd
    ocs/index.html
• Ctrl-Breakハ...
<Insert Picture Here>
Copyright© 2009, Oracle. All rights reserved.   22
Upcoming SlideShare
Loading in...5
×

JRockit 解析ツールの紹介

6,332

Published on

第一回 WebLogic Server 勉強会資料

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
6,332
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
92
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JRockit 解析ツールの紹介

  1. 1. <Insert Picture Here> JRockit 解析ツールの紹介 日本オラクル(株) カスタマーサービス統括本部 テクニカルアナリスト 横澤 潤 2009年4月14日
  2. 2. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。ま た、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約 )するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラ クル製品に関して記載されている機能の開発、リリースおよび時期については、弊社 の裁量により決定されます。 Oracle、PeopleSoft、JD Edwards、及びSiebelは、米国オラクル・コーポレーション及びその子会社、関連会社の登録商 標です。その他の名称はそれぞれの会社の商標の可能性があります。 Copyright© 2009, Oracle. All rights reserved. 2
  3. 3. Agenda • JRockit とは? • JRockit Ctrl-Break ハンドラの活用 • Ctrl-Break ハンドラの使い方と、Javaヒープ内のメモリリークオブジ ェクトの特定方法について紹介します。 • JRockit Mission Control 概要 • JRockit Mission Control と、Javaヒープ内のメモリリークオブジェク トの特定方法について紹介します。 Copyright© 2009, Oracle. All rights reserved. 3
  4. 4. JRockit とは? Copyright© 2009, Oracle. All rights reserved. 4
  5. 5. JRockit とは? • 概要 • Oracleが提供&サポートするJava SE完全準拠のJVM • サーバサイド用途専用に設計された高信頼性のJVM ※現在はクライアントサイド用途にも対応 • Intelアーキテクチャ(Xeon、Itanium 2)へ最適化された業界最速のJVM ※現在はSPARC版も提供 • 歴史 • 1998 年 スウェーデン アピールバーチャルマシンより初版がリリース • 2002 年 BEA が アピールバーチャルマシンを買収 • 2008 年 Oracle が BEAを買収 • Sun Java SE との互換性 • java –version でベースとなる Sun Java SE のバージョンを表示 java version quot;1.5.0_14quot; R27.5 Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03) BEA JRockit(R) (build R27.5.0-110-94909-1.5.0_14-20080204-1558-windows-ia32, compiled mode) java version quot;1.5.0_15quot; R27.6 Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_15-b04) BEA JRockit(R) (build R27.6.0-47_o-99698-1.5.0_15-20080603-2103-windows-ia32, compiled mode) • JRockitに含まれる各種ツール、JavaAPIは基本的にJava SEと同一だが、Java SEでは定義されていな い部分(ネーティブコード生成・最適化、メモリ管理、独自ツール等)を固有実装 • 運用監視機能・デバッグツール • 運用・監視・デバッグ・開発に有用な各種独自ツールの提供 Copyright© 2009, Oracle. All rights reserved. 5
  6. 6. JRockit Ctrl-Break ハンドラの活用 Copyright© 2009, Oracle. All rights reserved. 6
  7. 7. Ctrl-Break ハンドラとは? • JRockit の管理機能を利用する組み込み診断ツール • 効用 • 標準出力をリダイレクトしていなくても、スレッドダンプをファイルに 残せる • verbose ログの出力を再起動なしに変更できる • メモリリークの調査など、高度な機能も持つ Copyright© 2009, Oracle. All rights reserved. 7
  8. 8. Ctrl-Break ハンドラの使い方 1. JRockit プロセスのカレントディレクトリにコマンドを記載し たファイルを準備する • WebLogic Server であればドメインディレクトリ直下 • “ctrlhandler.act” というファイル名で、以下のような内容を保存 set_filename filename=ctrlhandler.log append=true print_threads • 「“ctrlhandler.log” というファイルに、 print_threads コマンド の結果を追記する」の意 2. JRockit プロセスにシグナル(SIGQUIT)を送る • Linux の場合:kill -3 <PID> • Windows の場合:Ctrl キーと Break キーを同時に押す Copyright© 2009, Oracle. All rights reserved. 8
  9. 9. 便利なコマンドの紹介 • print_object_summary • ヒープで多数を占めているオブジェクトを表示する (GC実行後の状況を表示) • print_memusage • ネイティブ部分も含めたメモリの使用量を表示 • timestamp • タイムスタンプを出力する • print_threads • 通常のスレッド ダンプを出力する • 利用可能な診断コマンド • http://otndnld.oracle.co.jp/document/products/jrockit/geninfo/ diagnos/ctrlbreakhndlr.html#wp1001218 Copyright© 2009, Oracle. All rights reserved. 9
  10. 10. Javaヒープ内のメモリリークオブジェクトの調査 • “ctrlhandler.act” ファイルの例 # My configuration(2006/7/31) set_filename filename=memusage.txt append=true print_object_summary increaseonly= true • # はコメントアウト • set_filename • 出力結果を JVM 実行カレントディレクトリのmemusage.txt ファイルへ 出力。append=true は、同一ファイルに内容を追記 • print_object_summary • java オブジェクトのメモリ使用状況を出力。 • GC実行後の使用状況を出力 • increaseonly =true • 前回計測時から増加したオブジェクトのみ表示(デフォルト: false) Copyright© 2009, Oracle. All rights reserved. 10
  11. 11. Javaヒープ内のメモリリークオブジェクトの調査 凡例 : : 凡例 byte BB • 出力例 byte char C char C int I I int print_object_summary array of type [type array of type [type reference to classname Lclassname reference to classname Lclassname --------- Detailed Heap Statistics: --------- 59.4% 10715 k 60256 -53k [C 8.7% 1564 k 2305 -24k [B 8.0% 1443 k 61604 -3k java/lang/String 2.8% 500 k 489 +0k [Lweblogic/servlet/utils/URLMatchMap$URLMatchNode; 2.6% 468 k 19969 -4k java/util/HashMap$Entry 2.0% 367 k 2464 -3k [Ljava/util/HashMap$Entry; 1.5% 279 k 4121 -48k [Ljava/lang/Object; 1.4% 246 k 1953 -96k [I 1.2% 208 k 8906 +0k java/util/Hashtable$Entry 18045kB total --- --------- End of Detailed Heap Statistics --- 全体に占める割合, サイズ, インスタンス数, 前回 測定してからの増加(減少)数, インスタンス名 Copyright© 2009, Oracle. All rights reserved. 11
  12. 12. Ctrl-Break ハンドラによるメモリ監視の利点 • GUI ベースのツール(Memory Leak Detector)と異なり、 定期的な自動実行を行いやすい • 時系列に沿ってデータが取得できるので、メモリリークしている オブジェクトを特定可能 • Out Of Memory の発生領域特定に役立つ • Ctrl-Break ハンドラ関連処理のパフォーマンスへの影響は 小さい • “ctrlhandler.act” の書き換え後、JVM の再起動なくすぐに 反映 Copyright© 2009, Oracle. All rights reserved. 12
  13. 13. Ctrl-Breakハンドラ デモ DEMO • 簡単なメモリリーク Java Application の動作確認 Copyright© 2009, Oracle. All rights reserved. 13
  14. 14. 簡単なメモリリーク Java Application の動作確認 DEMO • 内容 • デモでは、Java Runtime ディレクトリ配下にある、拡張子が*.txt の ファイルについて、単語数をカウントをします。 • 意図的にインスタンスの増加(メモリリーク)するコードになっていま す。 • Ctrl-Break ハンドラを使って、インスタンスが増加する様子を確認 します。 • ctrlhandler.act の内容 • 現在生存しているオブジェクトの数 (型ごと) と、それらが使用する サイズを調べます。 set_filename filename=C:¥SeminarDemo¥sample¥jroutput.txt append=true timestamp print_object_summary increaseonly=true Copyright© 2009, Oracle. All rights reserved. 14
  15. 15. 簡単なメモリリーク Java Application の動作確認 Ctrl-Breakハンドラで、 print_object_summary 情報を採取した結果 DEMO ==== Timestamp ==== uptime: 0 days, 00:00:03 time: Fri Apr 10 13:51:39 2009 --------- Detailed Heap Statistics: --------- 48.6% 204k 1527 +204k [C 全体に占める割合, サイズ, インスタンス数, 前回 12.5% 52k 482 +52k java/lang/Class 測定してからの増加(減少)数, インスタンス名 11.8% 49k 33 +49k [B 9.1% 38k 1631 +38k java/lang/String 5.8% 24k 787 +24k java/util/TreeMap$Entry 2.2% 9k 222 +9k [Ljava/lang/Object; 1.7% 7k 164 +7k [Ljava/lang/String; “WordCount” インスタンスが、起 0.6% 2k 4 +2k [Ljrockit/vm/FCECache$FCE; 動時に比べ、1775と増加してい 0.6% 2k 44 +2k java/net/URL る。 421kB total --- --------- End of Detailed Heap Statistics --- よって、”WordCount”をインスタン ==== Timestamp ==== uptime: 0 days, 00:00:25 time: Fri Apr 10 13:52:01 2009 ス化している部分が怪しい。 --------- Detailed Heap Statistics: --------- *) 2度目の情報は、GC実行後のも 77.2% 1792k 1789 +1743k [B の 11.6% 270k 1905 +65k [C 3.4% 78k 3361 +40k java/lang/String 2.3% 53k 487 +0k java/lang/Class 1.8% 41k 1775 +41k WordCount 0.8% 19k 223 +10k [Ljava/lang/Object; 2322kB total --- --------- End of Detailed Heap Statistics --- Copyright© 2009, Oracle. All rights reserved. 15
  16. 16. 簡単なメモリリーク Java Application の動作確認 public class WordCount { DEMO private static List allWords = new Vector(); private byte[] buffer; public WordCount(String word) { Vector に “WordCount” イン allWords.add(this); スタンスを加えていくが、そ れを削除するロジックがなか buffer = new byte[1000]; ったことが原因。 this.word = word; count = 1; } // 略 } Copyright© 2009, Oracle. All rights reserved. 16
  17. 17. JRockit Mission Control 概要 Copyright© 2009, Oracle. All rights reserved. 17
  18. 18. JRockit Mission Control 概要 • JRockit 専用のGUI 運用監視ツール • Java アプリなので、Java が動作する環境であれば使用可 能 • TCP/IP ベースのプロトコルでリモートのJRockitプロセスの 運用監視が可能 • JRockit側は以下のオプションでポートを開けるだけ 例: -Xmanagement:port=7091, ,ssl=false,authenticate=false • 機能一覧 • 管理コンソール • CPU 使用率、GC 状況、スレッド状況、メモリ使用状 況監視 • JRockit Memory Leak Detector • 詳細なメモリリーク検出 • JRockit Runtime Analyzer(JRA) • サーバ環境情報、JVM 設定情報、GC 詳細情報 • プロファイリング機能、簡易メモリリーク検出機能 • Latency Analyzer Toolによる処理遅延箇所の検出 Copyright© 2009, Oracle. All rights reserved. 18
  19. 19. JRockit Mission Control デモ DEMO • Ctrl-Break ハンドラのサンプルを、JRockit Mission Control で見た場合 • JRAレコーディングで採取した情報の紹介 Copyright© 2009, Oracle. All rights reserved. 19
  20. 20. 参考資料 • JRockit オンラインマニュアル • http://otndnld.oracle.co.jp/document/products/jrockit/webd ocs/index.html • Ctrl-Breakハンドラ • http://otndnld.oracle.co.jp/document/products/jrockit/genin fo/diagnos/ctrlbreakhndlr.html#wp1001207 • JRockit Mission Control • http://otndnld.oracle.co.jp/document/products/jrockit/genin fo/diagnos/intromiscon.html Copyright© 2009, Oracle. All rights reserved. 20
  21. 21. <Insert Picture Here>
  22. 22. Copyright© 2009, Oracle. All rights reserved. 22
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×