|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.mmtk.plan.Plan
org.mmtk.plan.Simple
org.mmtk.plan.StopTheWorld
org.mmtk.plan.generational.Gen
org.mmtk.plan.generational.immix.GenImmix
public class GenImmix
This class implements the functionality of a two-generation copying
collector where the higher generation is an immix space.
Nursery collections occur when either the heap is full or the nursery
is full. The nursery size is determined by an optional command line
argument. If undefined, the nursery size is "infinite", so nursery
collections only occur when the heap is full (this is known as a
flexible-sized nursery collector). Thus both fixed and flexible
nursery sizes are supported. Full heap collections occur when the
nursery size has dropped to a statically defined threshold,
NURSERY_THRESHOLD
See 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.
| Field Summary | |
|---|---|
static int |
IMMIX
|
static ImmixSpace |
immixSpace
The mature space, which for GenImmix uses a mark sweep collection policy. |
private boolean |
lastGCWasDefrag
|
Trace |
matureTrace
Instance fields |
static int |
SCAN_DEFRAG
|
static int |
SCAN_IMMIX
|
| Fields inherited from class org.mmtk.plan.generational.Gen |
|---|
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, wbSlow |
| Fields inherited from class org.mmtk.plan.StopTheWorld |
|---|
postSanityPhase, preSanityPhase |
| Constructor Summary | |
|---|---|
GenImmix()
|
|
| Method Summary | |
|---|---|
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 |
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()
|
protected void |
registerSpecializedMethods()
Register specialized methods. |
boolean |
willNeverMove(ObjectReference object)
Can this object ever move. |
| Methods inherited from class org.mmtk.plan.generational.Gen |
|---|
collectionRequired, copyMature, forceFullHeapCollection, getCollectionReserve, getPagesAvail, getPagesRequired, isCurrentGCNursery, lastCollectionFullHeap, printPreStats, requiresFullHeapCollection, sanityExpectedRC, traceFullHeap |
| Methods inherited from class org.mmtk.plan.StopTheWorld |
|---|
postBoot |
| Methods inherited from class org.mmtk.plan.Simple |
|---|
replacePhase, replacePlaceholderPhase |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final ImmixSpace immixSpace
public static final int IMMIX
public static final int SCAN_IMMIX
public static final int SCAN_DEFRAG
public final Trace matureTrace
private boolean lastGCWasDefrag
| Constructor Detail |
|---|
public GenImmix()
| Method Detail |
|---|
public final void collectionPhase(short phaseId)
collectionPhase in class GenphaseId - Collection phase to execute.public boolean lastCollectionWasExhaustive()
lastCollectionWasExhaustive in class Planpublic int getPagesUsed()
getPagesUsed in class Genpublic int getMaturePhysicalPagesAvail()
getMaturePhysicalPagesAvail in class Genprotected final Space activeMatureSpace()
activeMatureSpace in class Genpublic boolean willNeverMove(ObjectReference object)
Plan
willNeverMove in class Genobject - Object in question
Plan.willNeverMove(org.vmmagic.unboxed.ObjectReference)protected void registerSpecializedMethods()
registerSpecializedMethods in class Gen
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||