このウィンドウでは、デバッグ中のプログラムのヒープに存在するオブジェクトおよび配列に関する情報を表示します。このウィンドウに表示される列は、「ツール」「設定」 - 「デバッガ」 - ヒープ・ページ、またはヒープ・ウィンドウを右クリックすると表示されるポップアップ・メニュー・オプションから「設定」を選択し、有効にした列設定によって決まります。ポップアップ・メニュー・オプションについては後述します。
Javaでは、一般にガベージ・コレクタと呼ばれる自動メモリー管理システムが使用されます。オブジェクトが使用されなくなると、ガベージ・コレクタによって自動的に再生されます。調査を始める前に、ガベージ・コレクション・システムが、参照されていないオブジェクトを再生するように設定されていることを確認してください。ヒープ・ウィンドウを使用する前に、ツールバーの「ガベージ・コレクション」アイコン()をクリックします。これで、未使用のオブジェクトがヒープから削除されます。
注意:
ヒープ・ウィンドウには、クラス・フォルダと参照パス・フォルダという2種類のフォルダがあります。
クラス・フォルダでは、デバッグ中のプログラムのヒープに存在する特定のクラスまたは配列型のインスタンスをすべて参照できます。たとえば、ヒープに存在するjava.awt.Rectangle
のすべてのインスタンスを参照できます。
ヒープ・ウィンドウの最も下に、クラス名とフォルダに含まれるインスタンス数のラベルの付いた新規フォルダが追加されます。新規フォルダを開くと、インスタンスごとに子ノードが表示されます。インスタンスのメモリー・アドレスは、各子ノードの名前の列に表示されます。
参照パス・フォルダでは、特定のオブジェクトがまだヒープに存在し、ガベージ・コレクタによって再生されない理由を確認できます。ヒープ・ウィンドウの参照パス・フォルダには、ヒープに存在する特定オブジェクトへの参照パスがすべて含まれます。オブジェクトへの参照パスがない場合、オブジェクトはガベージ・コレクタによって再生されます。
参照パスはルート参照から始まります。通常、ルート参照は、Java Native Interface(JNI)によって確保されたスタック変数、staticフィールドまたはオブジェクトです。ガベージ・コレクション・システムの実装の詳細により、スレッド・レジスタまたはスタック領域がルート参照になることもあります。ヒープ・ウィンドウに表示される参照パスには、ルート参照、およびルート参照と調査中の特定オブジェクト間の参照の連鎖が示されます。
参照パス・フォルダを作成するには、クラス・フォルダが存在している必要があります(クラス・フォルダの作成手順については、前述の説明を参照してください)。クラス・フォルダを開き、インスタンス(クラス・フォルダの子ノード)を調べます。調査するインスタンスを1つ選択します。このオブジェクトをターゲット・オブジェクトと呼びます。ターゲット・オブジェクトを右クリックし、ポップアップ・メニューから「参照パスの表示」を選択します。「<instance address>への参照パス」というラベルが付いた新規フォルダが、ヒープ・ウィンドウの最も下に追加されます。新規フォルダを開くと、ターゲット・オブジェクトへの各ルート参照ごとに子ノードが表示されます。ルート参照からターゲット・オブジェクトまでの連鎖の深さは、「値」列に表示されます。参照パスをルート参照からターゲット・オブジェクトまで完全に拡張するには、ルート参照を右クリックし、「参照パスの拡張」を選択します。
ヒープ・ウィンドウから次のポップアップ・メニュー・オプションを選択して、ヒープ・ウィンドウで現在選択されているノードに適用できます。
byte
配列型、char
配列型、short配列型、int配列型およびlong配列型に使用できます。
true
の場合、このオプションを選択するとfalse
に変更されます。値がfalse
の場合、このオプションを選択するとtrue
に変更されます。
.html
拡張子または .htm
拡張子を付けずに名前を入力します。出力ファイルでは、列の間にタブが、行の間に新しい行が挿入されます。
.html
拡張子または.htm
拡張子(大/小文字の区別なし)を付けて名前を入力します。出力ファイルは、列を使用して編成された表になります。
Copyright © 1997, 2006, Oracle. All rights reserved.