public class GenImmix extends Gen
NURSERY_THRESHOLDSee the PLDI'08 paper by Blackburn and McKinley for a description of the algorithm: http://doi.acm.org/10.1145/1375581.1375586
See the Jones & Lins GC book, chapter 7 for a detailed discussion of generational collection and section 7.3 for an overview of the flexible nursery behavior ("The Standard ML of New Jersey collector"), or go to Appel's paper "Simple generational garbage collection and fast allocation." SP&E 19(2):171--183, 1989.
For general comments about the global/local distinction among classes refer to Plan.java and PlanLocal.java.
| Modifier and Type | Field and Description |
|---|---|
static int |
IMMIX |
static ImmixSpace |
immixSpace
The mature space, which for GenImmix uses a mark sweep collection policy.
|
private boolean |
lastGCWasDefrag |
Trace |
matureTrace
The trace class for a full-heap collection
|
static int |
SCAN_IMMIX
Specialized scanning method identifier
|
ALLOC_MATURE, ALLOC_MATURE_MAJORGC, ALLOC_MATURE_MINORGC, ALLOC_NURSERY, arrayRemsetPool, fullHeap, gcFullHeap, IGNORE_REMSETS, MATURE_FRACTION, modbufPool, nextGCFullHeap, NURSERY, NURSERY_VM_FRACTION, nurseryCons, nurseryMark, nurserySpace, nurseryTrace, remsetPool, SCAN_MATURE, SCAN_NURSERY, SURVIVAL_ESTIMATE, USE_NON_HEAP_OBJECT_REFERENCE_WRITE_BARRIER, USE_OBJECT_BARRIER, USE_OBJECT_BARRIER_FOR_AASTORE, USE_OBJECT_BARRIER_FOR_PUTFIELD, wbFast, wbSlowpostSanityPhase, preSanityPhaseCLOSURE, collection, collectionAttempt, COMPLETE, completeClosurePhase, FINALIZABLE, finishPhase, FORWARD, FORWARD_FINALIZABLE, FORWARD_REFS, forwardPhase, INITIATE, initPhase, PHANTOM_REFS, POST_SANITY_PLACEHOLDER, PRE_SANITY_PLACEHOLDER, PREPARE, PREPARE_STACKS, prepareStacks, refTypeClosurePhase, RELEASE, rootClosurePhase, ROOTS, SANITY_BUILD_TABLE, SANITY_CHECK_TABLE, SANITY_COPY_ROOTS, SANITY_PREPARE, SANITY_RELEASE, SANITY_ROOTS, SANITY_SET_POSTGC, SANITY_SET_PREGC, sanityBuildPhase, sanityCheckPhase, SET_COLLECTION_KIND, SOFT_REFS, STACK_ROOTS, WEAK_REFS, WEAK_TRACK_REFSALLOC_CODE, ALLOC_COLD_CODE, ALLOC_DEFAULT, ALLOC_GCSPY, ALLOC_HOT_CODE, ALLOC_IMMORTAL, ALLOC_LARGE_CODE, ALLOC_LOS, ALLOC_NON_MOVING, ALLOC_NON_REFERENCE, ALLOC_PRIMITIVE_LOS, ALLOC_STACK, allocationSiteCount, ALLOCATORS, concurrentWorkers, controlCollectorContext, DEFAULT_MAX_NURSERY, DEFAULT_MIN_NURSERY, DEFAULT_SITE, defaultCollectorContext, emergencyCollection, GATHER_WRITE_BARRIER_STATS, GC_PREPARE, GC_PROPER, IMMORTAL, immortalSpace, insideHarness, internalTriggeredCollection, LARGE_CODE, largeCodeSpace, lastInternalTriggeredCollection, LOS, loSpace, MAX_NON_LOS_COPY_BYTES, MAX_NON_LOS_DEFAULT_ALLOC_BYTES, MAX_NON_LOS_NONMOVING_ALLOC_BYTES, META, metaDataSpace, NEEDS_LOG_BIT_IN_HEADER, NON_MOVING, NON_PARTICIPANT, nonMovingSpace, NOT_IN_GC, parallelWorkers, pretenureThreshold, SANITY, sanityChecker, sanitySpace, SCAN_BOOT_IMAGE, SMALL_CODE, smallCodeSpace, stacksPrepared, totalTime, USE_CODE_SPACE, userTriggeredCollection, VM_SPACE, vmSpace| Constructor and Description |
|---|
GenImmix() |
| Modifier and Type | Method and Description |
|---|---|
protected Space |
activeMatureSpace()
Accessor method to allow the generic generational code in Gen.java
to access the mature space.
|
void |
collectionPhase(short phaseId)
Perform a (global) collection phase.
|
int |
getCollectionReserve()
Return the number of pages reserved for collection.
|
int |
getMaturePhysicalPagesAvail()
Return the number of pages available for allocation into the mature
space.
|
int |
getPagesUsed()
Return the number of pages reserved for use given the pending
allocation.
|
boolean |
lastCollectionWasExhaustive() |
void |
preCollectorSpawn()
Prepares for spawning of collectors.
|
protected void |
registerSpecializedMethods()
Registers specialized methods.
|
boolean |
willNeverMove(ObjectReference object)
Can this object ever move.
|
collectionRequired, copyMature, forceFullHeapCollection, fullyBooted, getPagesAvail, isCurrentGCNursery, lastCollectionFullHeap, printPreStats, requiresFullHeapCollection, sanityExpectedRC, traceFullHeapprocessOptionsreplacePhase, replacePlaceholderPhase, switchNurseryZeroingApproachavailableMemory, bootTimeWriteBarrier, concurrentCollectionRequired, determineThreadCount, enableAllocation, enableCollection, freeMemory, gcInProgress, gcInProgressProper, getAllocationSite, getPagesReserved, getSpecializedScanClass, getTotalPages, handleUserCollectionRequest, harnessBegin, harnessEnd, insertPhaseAfter, isEmergencyCollection, isInitialized, isInternalTriggeredCollection, isUserTriggeredCollection, loadObjectReference, logPoll, notifyExit, poll, printDetailedTiming, printPostStats, printUsedPages, reservedMemory, resetCollectionTrigger, sanityLinearScan, setBuildTimeGCByte, setGCStatus, spawnCollectorThreads, stacksPrepared, startGCspyServer, storeObjectReference, stressTestGCRequired, totalMemory, triggerInternalCollectionRequest, usedMemorypublic static final ImmixSpace immixSpace
public static final int IMMIX
public static final int SCAN_IMMIX
public final Trace matureTrace
private boolean lastGCWasDefrag
public GenImmix()
public final void collectionPhase(short phaseId)
collectionPhase in class GenphaseId - The unique id of the phase to perform.public boolean lastCollectionWasExhaustive()
lastCollectionWasExhaustive in class Planpublic int getPagesUsed()
getPagesUsed in class Genpublic int getMaturePhysicalPagesAvail()
GengetMaturePhysicalPagesAvail in class Genpublic int getCollectionReserve()
GengetCollectionReserve in class Genprotected final Space activeMatureSpace()
GenactiveMatureSpace in class Genpublic boolean willNeverMove(ObjectReference object)
PlanwillNeverMove in class Genobject - The object in questiontrue if it is not possible that the object will ever move.protected void registerSpecializedMethods()
PlanregisterSpecializedMethods in class Genpublic void preCollectorSpawn()
PlanThis is a good place to do initialization work that depends on options that are only known at runtime. Collectors must keep allocation to a minimum because collection is not yet enabled.
preCollectorSpawn in class Plan