これらは, G1CollectedHeap 使用時における Garbage Collection 処理用の補助クラス. より具体的に言うと, BarrierSet の一種 (See: here for details).
なお, これらの Barrier Set を使用する場合, write barrier 処理も元の値を退避しておく処理に変わる (G1GC の Concurrent Mark (snapshot-at-the-beginning 式) がきちんと動くようにするため) (See: here for details).
なお, これらのクラスは以下のような継承関係を持つ (実際に使用されるのは G1SATBCardTableLoggingModRefBS クラス).
G1GC 用の Barrier Set の基底クラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp))
// This barrier is specialized to use a logging barrier to support
// snapshot-at-the-beginning marking.
class G1SATBCardTableModRefBS: public CardTableModRefBSForCTRS {
コンストラクタは (_kind を G1SATBCT にしている点以外は) CardTableModRefBSForCTRS と同じ.
See: here for details
G1SATBCardTableModRefBS::enqueue() メソッドは, ポインタ変更時の write barrier 処理を行う.
ただし, これは jni_GetObjectField() や sun.misc.Unsafe から使用されるもので, 通常の write barrier 処理では使用されない (See: here for details).
See: here for details
G1SATBCardTableModRefBS クラスの具象サブクラス. 実際に Barrier Set として使用されるのはこのクラス.
((cite: hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp))
// Adds card-table logging to the post-barrier.
// Usual invariant: all dirty cards are logged in the DirtyCardQueueSet.
class G1SATBCardTableLoggingModRefBS: public G1SATBCardTableModRefBS {
各 CardTableRS オブジェクトの _ct_bs フィールドに(のみ)格納されている.
CardTableRS::CardTableRS() 内で(のみ)生成されている.
(CardTableModRefBS の内部構造も参照)
コンストラクタは (_kind を G1SATBCT にしている点以外は) CardTableModRefBSForCTRS と同じ.
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.