これらは, G1CollectedHeap 使用時における Garbage Collection 処理用の補助クラス. より具体的に言うと, GC で処理対象となる HeapRegion ("Collection Set") を選択するクラス.
G1CollectorPolicy クラス内で使用される補助クラス.
G1GC の Minor GC 時に, 処理対象となる HeapRegion を選択する (See: here for details).
((cite: hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp))
class CollectionSetChooser: public CHeapObj {
CollectionSetChooser::getNextMarkedRegion() を呼ぶと, 最も適切な HeapRegion を取得できる (なお, このメソッドは G1CollectorPolicy_BestRegionsFirst::choose_collection_set() 内で(のみ)使用されている).
各 G1CollectorPolicy_BestRegionsFirst オブジェクトの _collectionSetChooser フィールドに(のみ)格納されている.
G1CollectorPolicy_BestRegionsFirst::G1CollectorPolicy_BestRegionsFirst() 内で(のみ)生成されている.
See: here for details
CollectionSetChooser クラス内で使用されている補助クラス(ValueObjクラス).
候補の HeapRegion を優先度順に sort する.
((cite: hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp))
// We need to sort heap regions by collection desirability.
class CSetChooserCache VALUE_OBJ_CLASS_SPEC {
要素を CSetChooserCache::insert() で追加した後, CSetChooserCache::get_first() で最優先の候補を取得できる. 次の候補を得るには, CSetChooserCache::remove_first() を呼んでから CSetChooserCache::get_first() を呼ぶ.
各 CollectionSetChooser オブジェクトの _cache フィールドに(のみ)格納されている.
(CollectionSetChooser オブジェクトの _cache フィールドは, ポインタ型ではなく実体なので, CollectionSetChooser オブジェクトの生成時に一緒に生成される)
以下の箇所で(のみ)使用されている.
定義されているフィールドは以下のもののみ.
((cite: hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp))
HeapRegion* _cache[CacheLength];
int _occupancy; // number of region in cache
int _first; // "first" region in the cache
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.