ナビゲーションをスキップ

JRockit Runtime Analyzer ユーザーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

記録の確認

この節では、JRA ツールのさまざまなタブに表示される情報について説明します。さまざまな情報を役立てるには、BEA JRockit 仮想マシンの内部動作を深く理解している必要があります。データの意味については、このドキュメントでは詳しく説明しません。この節の内容は以下のとおりです。

 


アプリケーションに関する一般的なデータの表示

[General] タブ (図 2-1) では、スレッド、割り当て、例外、およびメモリ使用量の統計など、記録されたアプリケーション動作に関する一般的なデータが表示されます。BEA JRockit の起動に使用されたコマンドライン オプション ([VM arguments] セクション) も表示されます。

注意 : JRockit の旧バージョン (5.0 よりも古いバージョン) を起動している場合は、全フィールドのデータが収集されるわけではありません。データが収集されないフィールドは、空白となるか、「unknown」として示されます。

[General] タブに表示される情報のほとんどは非常に単純でわかりやすいものですが、一部の項目については説明が必要でしょう。そこで、以下では [General] タブ のいくつかの項目を選んで説明をします。

図 2-1 [General] タブ

[General] タブ


 

[Misc] の情報

JRockit プロセスのメモリ使用量の情報

このセクションには、記録の前後における JRockit のメモリ使用量のスナップショットが表示されます。

スレッド情報

このセクションには、記録の前後に存在した Java スレッドの数についての情報が表示されます。

割り当て値の情報

例外の情報

このセクションには、記録中に送出された Java 例外の総数についての情報が表示されます。この総数には、捕捉された例外と捕捉されなかった例外の両方が含まれます。送出された例外の数があまりにも多い場合は、パフォーマンスに問題のあることが疑われます。ハードウェア生成例外はハードウェア内の「トラップ」から生じるもので、一般的に最もコストのかかる種類の例外です。

 


よく使用されたメソッドの表示

[Methods] タブ (図 2-2) には、記録中に最もよく使用されたメソッドがリストされます。JRockit におけるメソッド サンプリングは、CPU サンプリングに基づいています。この方法では、サンプルを取得するためにシステムに負荷をかける必要があります。

[Top Hot Methods] には、記録中にサンプリングされたすべてのメソッドが、最も多くサンプリングされたものから順にリストされます。これらのメソッドが、JRockit の時間のほとんどを消費します。

図 2-2 [Methods] タブ

[Methods] タブ


 

よく使用されたメソッドのデータは JRockit によって定期的に収集されます。このために、実行中のスレッドがサンプリングされ、スレッドがどのメソッドを実行しているのかが確認されます。記録でネイティブ サンプリングを有効にしている場合は、jvm# というプレフィックスの付いたメソッドも表示されます。これは JVM のネイティブ メソッドです。[Filtering options] をクリックし、表示させたい最低限のサンプルの数を選択すると、上位リストに表示されるメソッドを制限することができます。

リスト内のメソッドを選択すると、右側のツリー表示に、サンプリングされた前後のメソッド ([Predecessors][Successors]) が表示されます。これらは、選択したメソッドを呼び出したメソッドと、選択したメソッドが呼び出したメソッドです。括弧内の数字は、メソッドが含まれている、サンプル済み呼び出しトレースの数です。パーセンテージは、特定のパスがメソッド ツリーの中でどの程度使用されているかを示します。

前後のメソッドをリスト表示で見たい場合は、[Tree view] の代わりに [List view] を選択して表示を変更します。

 


ガベージ コレクション データの表示

[GCs] タブ (図 2-3) には、発生した各ガベージ コレクション (GC) イベントの詳細情報が表示されます。グラフには、各ガベージ コレクションの前後のヒープ使用率や、休止時間、見つかった java.lang.ref.* オブジェクトの数が表示されます。[GCs during recording] リストから特定のガベージ コレクション イベントを選択すると、右下のペインにそのイベントの詳細が表示されます。

図 2-3 [GCs] タブ

[GCs] タブ


 

[GCs during recording] の情報

このセクションのリストには、記録中のすべてのガベージ コレクション (GC) イベントがリストされます (ガベージ コレクション サンプリングを有効にしてある場合)。ガベージ コレクションは、古いコレクション (Java ヒープの古い領域内のガベージ コレクション) である場合も、若いコレクション (若い領域、つまりナーサリ内のガベージ コレクション) である場合もあります。リスト内のガベージ コレクションをクリックすると、[GC Charts] タブと [Details on selected GC] セクションにそのデータが表示されます。

[GC Charts] タブの情報

[GC Charts] タブに表示される情報には、2 つのチャートが含まれます。また、このタブにはボタンが 2 つあります。

左側の GC のリストでガベージ コレクションをどれかクリックすると、チャート上にその特定の GC を表す小さなフラグ (アノテーション) が表示されます。図 2-4 を参照してください。

図 2-4 選択されたガベージ コレクションの統計を表すアノテーション

選択されたガベージ コレクションの統計を表すアノテーション


 

[General] の情報

このセクションには、記録期間中の一般的なガベージ コレクション統計が表示されます。たとえば、古いコレクションの平均的な休止時間 ([Avg OC pause time])や若いコレクションの平均的な休止時間 ([Avg YC pause time]) などです。

選択された GC の情報

[Details on selected GC] セクションには、選択したガベージ コレクション期間の詳細な情報が表示される 4 つのタブがあります。

[Details] タブ

[Details] タブ (図 2-5) には、以下の情報が表示されます。

図 2-5 [Details] タブ

[Details] タブ


 

[OC specific] タブ

[OC specific] (Old Collection specific) タブ (図 2-6) には、以下の情報が表示されます。

図 2-6 [OC specific] タブ

[OC specific] タブ


 


 

[YC specific] タブ

[YC specific] (Young Collection specific) タブ (図 2-7) には、以下の情報が表示されます。

図 2-7 [YC specific] タブ

[YC specific] タブ


 

[Cache lists] タブ

ここで、さまざまなキャッシュ リストの設定を表示できます (図 2-8)。各キャッシュ リストには、上限と下限のキャッシュ サイズの設定も表示されます。

図 2-8 [Cache lists] タブ

[Cache lists] タブ


 

 


Java ヒープの内容の表示

[Heap overview] タブ (図 2-9) には、記録時の Java ヒープ内のメモリ構成の概要が表示されます。このタブには、[Heap contents] (左側) と [Free memory distribution] (右側) の比率を示す 2 つの円グラフが含まれています。

[Heap overview] タブの一番上に表示される情報は、Java ヒープでのメモリ使用量に関するさまざまな統計を示しています。

図 2-9 [Heap overview] タブ

[Heap overview] タブ


 

[Heap contents] 円グラフ

[Heap contents] 円グラフは、Java ヒープにおける、大きなオブジェクトおよび小さなオブジェクトのチャンク、ダーク マター、および空き領域の構成比率を示します。ダーク マターの量は、Java ヒープ内のどれだけの領域が Java ヒープの断片化が原因で無駄になっているかを示しています。ヒープ内に一定の量のダーク マターがあるのは一般的なことです。

[Free memory distribution] 円グラフ

[Free memory distribution] 円グラフは、Java ヒープ上で異なるサイズの空きブロック内に空きメモリがどのように分散しているかを示しています。

 


オブジェクト統計の表示

記録セッションの最初と最後に、Java ヒープを占有している最も一般的なオブジェクトのタイプ/クラス (インスタンスが総じて最も多くのメモリを占有しているタイプ) を示すスナップショットが取得されます。その結果は [Object statistics] タブ (図 2-10) に表示されます。オブジェクトの統計に異常な結果がある場合、アプリケーションに存在するメモリ リークの検出に役立てることができます。

図 2-10 [Object statistics] タブ

[Object statistics] タブ


 

 


メソッドの最適化の表示

[Optimizations] タブ (図 2-11) には、BEA JRockit の適応性のある最適化システムによって記録中に最適化されたメソッドが表示されます。

最適化されたメソッドは時系列で表示されます。[Methods optimized during recording] テーブルに記載されたサイズは、最適化の前と後のメソッドのサイズ (バイト単位) です。インライン化などの最適化によって、メソッドのサイズが増えることもあります。[Optimization & JIT] セクションに表示される情報は、JRockit がどのようにアプリケーションのコードを最適化したかを示します。

図 2-11 [Optimizations] タブ

[Optimizations] タブ


 


 

 


アプリケーションおよび JRockit でのロック アクティビティの表示

[Lock profiling] タブ (図 2-12) には、JRA でモニタされているアプリケーションのロックの動作に関する総合的な情報が表示されます。ロックのプロファイルは、JRockit コマンドラインで -Djrockit.lockprofiling コマンドを発行した場合にのみ生成されます。

以下に例を示します。

java -Djrockit.lockprofiling -XXjra:<AnyJRAParam> -jar MyApplication.jar

ロックの詳細については、付録「BEA JRockit でのシン ロック、ファット ロック、再帰的ロック、および競合するロックについて」を参照してください。

図 2-12 [Lock profiling] タブ

[Lock profiling] タブ


 

Java ロック プロファイリング

[Java lock profiling] セクションに表示される情報は、アプリケーション内のスレッドのロックの数を示しています。競合していないシン ロック、競合しているシン ロック、および再帰的なシン ロックの数、そして競合していないファットロック、競合しているファット ロック、および再帰的なファット ロックの数、さらに競合していない、および競合している予約ビット (RB) の情報が表示されます。

列ヘッダをクリックすると、列の内容をソートして表示することができます。

ネイティブ ロック プロファイリング

JRockit J2SE 5.0 以降の記録には、ネイティブ ロックの情報も含まれています。ネイティブ ロックは JRockit 内部コード内のロックで、アプリケーションからは制御できません。JRockit 内部ロックで高い競合を見つけたら、アプリケーションに問題を引き起こしている可能性があります。BEA サポートに連絡するか、dev2dev Web サイトの BEA JRockit ニュースグループを通して報告してください。

 


記録へのコメントの追加

[Comments] タブ (図 2-13) には簡単なテキスト エディタの機能があり、記録に関するコメントを記入することができます。この機能は、JRA 記録を BEA に送る際に、コメントを付け足すのに役立つ場合があります。コメントを保存するには、[FileSave comments] をクリックします。

図 2-13 [Comments] タブ

[Comments] タブ


 

 

ナビゲーション バーのスキップ  ページの先頭 前 次