これらは, ParallelScavengeHeap の Minor GC 処理 ("Parallel Scavenge" 処理) で使用される補助クラス (See: here for details).
より具体的に言うと, Minor GC 時 (Copy GC 時) に 各 GCTaskThread がコピー先として使用する To 領域や Old 領域を管理するクラス.
ParallelScavengeHeap の Minor GC 処理で使用される "Local Allocation Buffer" クラスの基底クラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp))
class PSPromotionLAB : public CHeapObj {
各 GCTaskThread がコピー先として使用する To 領域と Old 領域を管理するクラス.
コピーするたびにメモリ領域を排他で取得したりすると重いので, あらかじめある程度の領域を thread local に確保するためのもの. 主に PSPromotionManager 内で使用される (See: PSPromotionManager).
なお, 中身は MutableSpace にそっくりだが, MutableSpace 内の assert 等が Parallel Scavenge 処理での使い方に合わないため別にクラスを作った, とのこと.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp))
// PSPromotionLAB is a parallel scavenge promotion lab. This class acts very
// much like a MutableSpace. We couldn't embed a MutableSpace, though, as
// it has a considerable number of asserts and invariants that are violated.
See: here for details
PSPromotionLAB クラスの具象サブクラスの1つ.
このクラスは To 領域用 (つまり各 GCTaskThread がコピー先として使用する To 領域をある程度 thread local で確保しておくためのクラス).
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp))
class PSYoungPromotionLAB : public PSPromotionLAB {
PSPromotionManager オブジェクトの _young_lab フィールドに(のみ)格納されている.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp))
PSYoungPromotionLAB _young_lab;
See: here for details
PSPromotionLAB クラスの具象サブクラスの1つ.
このクラスは Old 領域用 (つまり各 GCTaskThread がコピー先として使用する Old 領域をある程度 thread local で確保しておくためのクラス).
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp))
class PSOldPromotionLAB : public PSPromotionLAB {
PSPromotionManager オブジェクトの _old_lab フィールドに(のみ)格納されている.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp))
PSOldPromotionLAB _old_lab;
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.