ParallelScavenge 用の BlockOffsetTable クラス (See: BlockOffsetTable) (See: here for details)
(継承関係としては BlockOffsetTable クラスと何の関係もないが, 果たしている役割は類似)
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp))
// This class can be used to locate the beginning of an object in the
// covered region.
//
class ObjectStartArray : public CHeapObj {
PSOldGen クラスの _start_array フィールドに(のみ)格納されている.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp))
class PSOldGen : public CHeapObj {
...
ObjectStartArray _start_array; // Keeps track of where objects start in a 512b block
(PSOldGen クラスの _start_array フィールドは, ポインタ型ではなく実体なので, PSOldGen オブジェクトの生成時に一緒に生成される)
なお現状の block size は, 29 = 512 byte.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp))
enum BlockSizeConstants {
block_shift = 9,
block_size = 1 << block_shift,
block_size_in_words = block_size / sizeof(HeapWord)
};
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.