Java™ ヒープに関連する用語の説明。
Java ヒープ内のオブジェクトを記述するために、以下の用語が使用されます。
- シャロー・ヒープ
- 1 つのオブジェクトによって消費されるメモリー量。オペレーティング・システムのアーキテクチャーに応じて、オブジェクトに必要なメモリー量は異なります。例えば、参照には 32 ビットか 64 ビット、整数には 4 バイト、または「Long」型のオブジェクトには 8 バイトなどとなります。ヒープ・ダンプの形式に応じて、サイズを調整してより現実的な JVM の使用量を指定することができます。
- 保存セット
- 1 つ以上のオブジェクトに、そのオリジナル・オブジェクトからのみ (直接または間接的に) 参照されるオブジェクトを加えたもの。
保存セットは、1 つのオブジェクトまたは複数のオブジェクトがガーベッジ・コレクションされたときに、ガーベッジ・コレクションによって削除されるオブジェクトのセットです。
次の図は、Java ヒープ内のオブジェクトを表しています。オブジェクト A および B は、ガーベッジ・コレクション・ルート (例えば、メソッド・パラメーター、ローカルに作成されたオブジェクト、あるいは
wait()、
notify()、または
synchronized() メソッドに使用されるオブジェクト) です。オブジェクト A および B のセットには、オブジェクト A、B、C、D、E、F、G、および H からなる保存セットがあります。
例えば、オブジェクト G が A または B 以外のガーベッジ・コレクション・ルートによって参照されている場合、ガーベッジ・コレクション中にオブジェクト A および B が削除されても、オブジェクト G は残されます。
したがって、オブジェクト G はオブジェクト A および B の保存セットには含まれません。
- 保存ヒープまたは保存サイズ
- 保存セット内のすべてのオブジェクトの合計ヒープ・サイズ。この値は、保存セットのルートにあるオブジェクトによって存続されているすべてのオブジェクトによって消費されるメモリーの量です。
大まかに言えば、オブジェクトのシャロー・ヒープはヒープ内のオブジェクトのサイズです。
同じオブジェクトの保存サイズは、そのオブジェクトがガーベッジ・コレクションされるときに解放されるヒープ・メモリーの量です。
「最小保存サイズの計算」ポップアップ・メニュー・オプションを選択すると、精度の高い保存サイズの見積もりが提供され、この計算にかかる時間はオブジェクト・セットの正確な保存サイズを計算する場合より高速です。最小保存サイズは、ヒープ・ダンプ内のオブジェクトの数ではなく、検査されたセット内のオブジェクト数のみによって決まります。