Java Platform, Standard Editionトラブルシューティング・ガイド
目次      

プロセス・セクションの形式

プロセス・セクションはスレッド・セクションのあとに出力されます。ここには、プロセスのスレッド・リストやメモリー使用状況など、プロセス全体に関する情報が含まれます。

スレッド・リスト

スレッド・リストには、例A-12に示すように、VMが認識しているスレッドが含まれます。これには、すべてのJavaスレッドおよび一部のVM内部スレッドが含まれますが、例A-13に示すように、VMに接続していないユーザー・アプリケーションによって作成されたネイティブ・スレッドは含まれていません。

スレッド・タイプやスレッド状態については、「スレッド・セクションの形式」で説明されています。

VMの状態

その次の情報はVMの状態で、これは仮想マシン全体の状態を示します。表A-3は、一般的な状態を説明しています。

VM状態の出力は次のように、エラー・ログ内で1行になります。

VM state:not at safepoint (normal execution)

相互排他ロックとモニター

エラー・ログ内のその次の情報は、例A-14に示すように、現在スレッドによって所有されている相互排他ロックとモニターのリストです。これらの相互排他ロックは、Javaオブジェクトに関連付けられたモニターではなく、VM内部のロックです。VMロックが保持された状態でクラッシュが発生した場合の出力を示す例を次に示します。ログにはロックごとに、ロックの名前、所有者、VM内部の相互排他ロック構造体のアドレス、およびそのOSロックのアドレスが含まれます。この情報は一般に、HotSpot VMにきわめて習熟したユーザーにしか役に立ちません。所有者スレッドはスレッド・リストと相互参照できます。

ヒープ・サマリー

例A-15に示すように、その次の情報は、ヒープ・サマリーです。出力はガベージ・コレクション(GC)の構成に依存します。この例ではシリアル・コレクタが使用され、クラス・データ共有が無効にされ、Tenured世代が空になっています。これはおそらく、初期段階や起動中に致命的なエラーが発生し、GCがまだどのオブジェクトもTenured世代に昇格させていなかったことを示しています。

メモリー・マップ

ログ内のその次の情報は、クラッシュ時の仮想メモリー領域のリストです。大きなアプリケーションの場合、このリストが長くなる可能性があります。メモリー・マップは一部のクラッシュをデバッグする際に非常に役立つ可能性がありますが、それは、実際に使用されていたライブラリやそのメモリー内での場所はもちろん、ヒープ、スタック、およびガード・ページの場所もわかるからです。

メモリー・マップの形式はオペレーティング・システムに固有です。Oracle Solarisオペレーティング・システムではベース・アドレスとライブラリ名が出力されます。Linuxシステムではプロセス・メモリー・マップ(/proc/pid/maps)が出力されます。Windowsシステムでは各ライブラリのベース・アドレスと終了アドレスが出力されます。例A-16は、Linux/x86で生成された出力を示しています。注意: この例では簡潔にするために、ほとんどの行が省略されています。

例A-17に示されたメモリー・マップの出力では、各ライブラリに2つの仮想メモリー領域(コード用とデータ用に1つずつ)があります。コード・セグメントのアクセス権はr-xp (読取り可能、実行可能、非公開)でマークされ、データ・セグメントのアクセス権はrw-p (読取り可能、書込み可能、非公開)になります。

Javaヒープはすでに出力の前のほうのヒープ・サマリーに含まれていますが、ヒープ用に予約された実際のメモリー領域がヒープ・サマリーの値と一致することや、属性がrwxpに設定されていることを確認することは、有用である可能性があります。

スレッド・スタックは通常、メモリー・マップ内で連続する2つの領域、具体的にはアクセス権が---pの領域(ガード・ページ)とアクセス権がrwxpの領域(実際のスタック領域)として表示されます。さらに、ガード・ページ・サイズやスタック・サイズを知ることは有用です。たとえばこのメモリー・マップでは、スタックの場所は4127b000から412fb000です。

Windowsシステムでは、例A-18に示すように、メモリー・マップの出力は、ロードされた各モジュールのロード・アドレスと終了アドレスになります。

VM引数と環境変数

エラー・ログ内のその次の情報は、例A-19に示すように、VM引数のリストと、それに続く環境変数のリストです。


注:

この環境変数のリストは、Java VMに適用可能な環境変数の完全なリストではなく、その一部です。

シグナル・ハンドラ

Oracle SolarisおよびLinuxオペレーティング・システムでは、例A-20に示すように、エラー・ログ内のその次の情報はシグナル・ハンドラのリストです。

目次      

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.