public class ImmixCollector extends StopTheWorldCollector
Specifically, this class defines Immix collection behavior
(through fastTrace
and the collectionPhase
method).
for an overview of the immix algorithm.
FIXME The SegregatedFreeList class (and its decendents such as
MarkSweepLocal) does not properly separate mutator and collector
behaviors, so the immix field below should really not exist in
this class as there is no collection-time allocation in this
collector.
,
Immix
,
MutatorLocal
,
StopTheWorldCollector
,
CollectorContext
,
Phase
Modifier and Type | Field and Description |
---|---|
protected ImmixAllocator |
copy |
protected TraceLocal |
currentTrace |
protected ImmixDefragTraceLocal |
defragTrace |
protected ImmixTraceLocal |
fastTrace |
protected CollectorLocal |
immix |
protected BumpPointer |
immortal |
sanityLocal
group
log
Constructor and Description |
---|
ImmixCollector()
Constructor
|
Modifier and Type | Method and Description |
---|---|
Address |
allocCopy(ObjectReference original,
int bytes,
int align,
int offset,
int allocator)
Allocate space for copying an object (this method does not
copy the object, it only allocates space)
|
void |
collectionPhase(short phaseId,
boolean primary)
Perform a (local, i.e.per-collector) collection phase.
|
TraceLocal |
getCurrentTrace() |
private static Immix |
global() |
void |
postCopy(ObjectReference object,
ObjectReference typeRef,
int bytes,
int allocator)
Perform any post-copy actions.
|
collect, concurrentCollect, concurrentCollectionPhase
parallelWorkerCount, parallelWorkerOrdinal, park, rendezvous, run
copyCheckAllocator, getId, getLog, initCollector
protected ImmixTraceLocal fastTrace
protected ImmixDefragTraceLocal defragTrace
protected CollectorLocal immix
protected final ImmixAllocator copy
protected final BumpPointer immortal
protected TraceLocal currentTrace
public ImmixCollector()
public Address allocCopy(ObjectReference original, int bytes, int align, int offset, int allocator)
allocCopy
in class CollectorContext
original
- The object that is being copied.bytes
- The size of the space to be allocated (in bytes)align
- Required alignment for the copyoffset
- Offset associated with the alignment.allocator
- The allocator associated with this requestpublic void postCopy(ObjectReference object, ObjectReference typeRef, int bytes, int allocator)
CollectorContext
postCopy
in class CollectorContext
object
- The newly allocated object.typeRef
- the type reference for the instance being created.bytes
- The size of the space to be allocated (in bytes).allocator
- The allocator statically assigned to this allocation.public void collectionPhase(short phaseId, boolean primary)
collectionPhase
in class SimpleCollector
phaseId
- The unique phase identifierprimary
- Should this thread be used to execute any single-threaded
local operations?public final TraceLocal getCurrentTrace()
getCurrentTrace
in class ParallelCollector