これらは, Java ヒープ領域を管理するためのクラス (See: here for details).
Java ヒープ領域を管理するクラスは使用する GC アルゴリズムによって異なるが, これらのクラスは GC アルゴリズムが G1GC でも ParallelScavenge でもない場合に使用される. (See: G1CollectedHeap, ParallelScavengeHeap)
Java ヒープ領域の管理を担当するクラス(CollectedHeapクラス)の1つ (See: here for details).
このクラスは, GC アルゴリズムが Serial, ParNew, Serial Old, CMS の場合用.
((cite: hotspot/src/share/vm/memory/genCollectedHeap.hpp))
// A "GenCollectedHeap" is a SharedHeap that uses generational
// collection. It is represented with a sequence of Generation's.
class GenCollectedHeap : public SharedHeap {
See: here for details
GenCollectedHeap 内の Generation オブジェクトを処理する Closure クラス (の基底クラス).
((cite: hotspot/src/share/vm/memory/genCollectedHeap.hpp))
class GenClosure : public StackObj {
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/memory/genCollectedHeap.hpp))
virtual void do_generation(Generation* gen) = 0;
See: here for details
トラブルシューティング用のクラス (関連する diagnostic オプションが指定されている場合にのみ使用される) (See: VerifyBeforeGC, VerifyDuringGC, VerifyGCLevel, VerifyGCStartAt).
GenCollectedHeap クラス内で使用される補助クラス (Closure クラス). 指定された Generation オブジェクトに対して Generation::prepare_for_verify() を呼び出すことで, 検証処理の前準備を行う.
((cite: hotspot/src/share/vm/memory/genCollectedHeap.cpp))
class GenPrepareForVerifyClosure: public GenCollectedHeap::GenClosure {
GenCollectedHeap::prepare_for_verify() 内で(のみ)使用されている
(GenCollectedHeap::prepare_for_verify() は verify 処理で使用される関数. 実際の verify 処理は Universe::verify() が行うが, その直前でこの関数が呼び出されて前準備を行う. 行う処理としては, GenCollectedHeap 内の全ての Generation オブジェクトに対して Generation::prepare_for_verify() を呼び出すだけ) (See: here for details)
See: here for details
GenCollectedHeap クラス内で使用される補助クラス (Closure クラス).
指定された Generation オブジェクトに対して Generation::gc_prologue() を呼び出すことで, GC の前準備を行う. (See: here for details)
((cite: hotspot/src/share/vm/memory/genCollectedHeap.cpp))
class GenGCPrologueClosure: public GenCollectedHeap::GenClosure {
GenCollectedHeap::gc_prologue() 内で(のみ)使用されている (GenCollectedHeap 内の全ての Generation オブジェクトに対して Generation::gc_prologue() を呼び出す処理).
See: here for details
GenCollectedHeap クラス内で使用される補助クラス (Closure クラス).
指定された Generation オブジェクトに対して Generation::gc_epilogue() を呼び出すことで, GC の後始末を行う (See: here for details).
((cite: hotspot/src/share/vm/memory/genCollectedHeap.cpp))
class GenGCEpilogueClosure: public GenCollectedHeap::GenClosure {
GenCollectedHeap::gc_epilogue() 内で(のみ)使用されている (GenCollectedHeap 内の全ての Generation オブジェクトに対して Generation::gc_epilogue() を呼び出す処理).
See: here for details
デバッグ用(開発時用)のクラス (#ifndef PRODUCT 時にしか定義されない).
GenCollectedHeap クラス内で使用される補助クラス (Closure クラス). 指定された Generation オブジェクトに対して Generation::record_spaces_top() を呼び出すことで, その時点での使用量の記録を行う.
((cite: hotspot/src/share/vm/memory/genCollectedHeap.cpp))
#ifndef PRODUCT
class GenGCSaveTopsBeforeGCClosure: public GenCollectedHeap::GenClosure {
GenCollectedHeap::record_gen_tops_before_GC() 内で(のみ)使用されている (GenCollectedHeap 内の全ての Generation オブジェクトに対して Generation::record_gen_tops_before_GC() を呼び出す処理). (See: here for details)
なお, このクラスは (デバッグ時であることに加えて) ZapUnusedHeapArea オプションが指定されている場合にしか使用されない.
((cite: hotspot/src/share/vm/memory/genCollectedHeap.cpp))
void GenCollectedHeap::record_gen_tops_before_GC() {
if (ZapUnusedHeapArea) {
GenGCSaveTopsBeforeGCClosure blk;
generation_iterate(&blk, false); // not old-to-young.
perm_gen()->record_spaces_top();
}
}
See: here for details
GenCollectedHeap クラス内で使用される補助クラス (Closure クラス).
指定された Generation オブジェクトに対して Generation::ensure_parsability() を呼び出すことで, GC 時に内部を処理できる状態にしておく.
((cite: hotspot/src/share/vm/memory/genCollectedHeap.cpp))
class GenEnsureParsabilityClosure: public GenCollectedHeap::GenClosure {
GenCollectedHeap::ensure_parsability() 内で(のみ)使用されている (GenCollectedHeap 内の全ての Generation オブジェクトに対して Generation::record_gen_tops_before_GC() を呼び出す処理) (See: here for details)
See: here for details
GenCollectedHeap クラス内で使用される補助クラス (Closure クラス).
指定された Generation オブジェクトに対して Generation::time_of_last_gc() を呼び出し, その値がそれまでに取得した値より小さければ記録する.
((cite: hotspot/src/share/vm/memory/genCollectedHeap.cpp))
class GenTimeOfLastGCClosure: public GenCollectedHeap::GenClosure {
GenCollectedHeap::millis_since_last_gc() 内で(のみ)使用されている (GenCollectedHeap 内の全ての Generation オブジェクトに対して Generation::time_of_last_gc() を呼び出し, それらの値の内で一番小さいものを得るための処理).
(なお, これは sun.misc.GC.maxObjectInspectionAge() メソッドを実現するため(だけ)の関数. (See: JVM_MaxObjectInspectionAge()))
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.