public class StickyMS extends MS
All plans make a clear distinction between global and thread-local activities, and divides global and local state into separate class hierarchies. Global activities must be synchronized, whereas no synchronization is required for thread-local activities. There is a single instance of Plan (or the appropriate sub-class), and a 1:1 mapping of PlanLocal to "kernel threads" (aka CPUs or in Jikes RVM, Processors). Thus instance methods of PlanLocal allow fast, unsychronized access to functions such as allocation and collection.
The global instance defines and manages static resources (such as memory and virtual memory resources). This mapping of threads to instances is crucial to understanding the correctness and performance properties of MMTk plans.
| Modifier and Type | Field and Description |
|---|---|
boolean |
collectWholeHeap
will this collection collect the whole heap
|
(package private) static boolean |
MAJOR_GC_ONLY
If
true then we only do full heap GCs---so we're like MarkSweep (+ write barrier) |
SharedDeque |
modPool
Remset pool
|
boolean |
nextGCWholeHeap
will the next collection collect the whole heap?
|
(package private) static boolean |
NURSERY_COLLECT_PLOS
If
true, then new PLOS objects are collected at each nursery GC |
static int |
SCAN_NURSERY |
MARK_SWEEP, msSpace, msTrace, SCAN_MARKpostSanityPhase, 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 |
|---|
StickyMS() |
| Modifier and Type | Method and Description |
|---|---|
void |
collectionPhase(short phaseId)
Perform a (global) collection phase.
|
void |
forceFullHeapCollection()
Force the next collection to be full heap.
|
boolean |
isCurrentGCNursery() |
boolean |
isLastGCFull() |
void |
printPreStats()
Print pre-collection statistics.
|
protected void |
registerSpecializedMethods()
Registers specialized methods.
|
int |
sanityExpectedRC(ObjectReference object,
int sanityRootRC)
Return the expected reference count.
|
void |
userTriggeredGC()
A user-triggered GC has been initiated.
|
getPagesUsed, willNeverMoveprocessOptionsreplacePhase, replacePlaceholderPhase, switchNurseryZeroingApproachavailableMemory, bootTimeWriteBarrier, collectionRequired, concurrentCollectionRequired, determineThreadCount, enableAllocation, enableCollection, freeMemory, fullyBooted, gcInProgress, gcInProgressProper, getAllocationSite, getCollectionReserve, getPagesAvail, getPagesReserved, getSpecializedScanClass, getTotalPages, handleUserCollectionRequest, harnessBegin, harnessEnd, insertPhaseAfter, isEmergencyCollection, isInitialized, isInternalTriggeredCollection, isUserTriggeredCollection, lastCollectionFullHeap, lastCollectionWasExhaustive, loadObjectReference, logPoll, notifyExit, poll, preCollectorSpawn, printDetailedTiming, printPostStats, printUsedPages, reservedMemory, resetCollectionTrigger, sanityLinearScan, setBuildTimeGCByte, setGCStatus, spawnCollectorThreads, stacksPrepared, startGCspyServer, storeObjectReference, stressTestGCRequired, totalMemory, triggerInternalCollectionRequest, usedMemorystatic final boolean NURSERY_COLLECT_PLOS
true, then new PLOS objects are collected at each nursery GCstatic final boolean MAJOR_GC_ONLY
true then we only do full heap GCs---so we're like MarkSweep (+ write barrier)public static int SCAN_NURSERY
public boolean nextGCWholeHeap
public boolean collectWholeHeap
public final SharedDeque modPool
public StickyMS()
public void userTriggeredGC()
public void forceFullHeapCollection()
PlanforceFullHeapCollection in class Planpublic final void collectionPhase(short phaseId)
MScollectionPhase in class MSphaseId - The unique id of the phase to perform.public void printPreStats()
printPreStats in class Planpublic final boolean isCurrentGCNursery()
isCurrentGCNursery in class Planpublic final boolean isLastGCFull()
public int sanityExpectedRC(ObjectReference object, int sanityRootRC)
Plantrue/false relationship.sanityExpectedRC in class Planobject - The object to check.sanityRootRC - The number of root references to the object.protected void registerSpecializedMethods()
PlanregisterSpecializedMethods in class MS