org.mmtk.plan.marksweep
Class MS
java.lang.Object
org.mmtk.plan.Plan
org.mmtk.plan.Simple
org.mmtk.plan.StopTheWorld
org.mmtk.plan.marksweep.MS
- All Implemented Interfaces:
- Constants
- Direct Known Subclasses:
- Poisoned, StickyMS
public class MS
- extends StopTheWorld
This class implements the global state of a simple mark-sweep collector.
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). 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.
Fields inherited from class org.mmtk.plan.Simple |
CLOSURE, 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_REFS |
Fields inherited from class org.mmtk.plan.Plan |
ALLOC_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 |
Fields inherited from interface org.mmtk.utility.Constants |
ALIGNMENT_VALUE, ARRAY_ELEMENT, BITS_IN_ADDRESS, BITS_IN_BYTE, BITS_IN_CHAR, BITS_IN_INT, BITS_IN_PAGE, BITS_IN_SHORT, BITS_IN_WORD, BYTES_IN_ADDRESS, BYTES_IN_BYTE, BYTES_IN_CHAR, BYTES_IN_INT, BYTES_IN_KBYTE, BYTES_IN_MBYTE, BYTES_IN_PAGE, BYTES_IN_SHORT, BYTES_IN_WORD, CARD_MASK, CARD_META_PAGES_PER_REGION, INSTANCE_FIELD, LOG_BITS_IN_ADDRESS, LOG_BITS_IN_BYTE, LOG_BITS_IN_CHAR, LOG_BITS_IN_INT, LOG_BITS_IN_PAGE, LOG_BITS_IN_SHORT, LOG_BITS_IN_WORD, LOG_BYTES_IN_ADDRESS, LOG_BYTES_IN_ADDRESS_SPACE, LOG_BYTES_IN_BYTE, LOG_BYTES_IN_CHAR, LOG_BYTES_IN_INT, LOG_BYTES_IN_KBYTE, LOG_BYTES_IN_MBYTE, LOG_BYTES_IN_PAGE, LOG_BYTES_IN_SHORT, LOG_BYTES_IN_WORD, LOG_CARD_BYTES, LOG_CARD_GRAIN, LOG_CARD_META_BYTES, LOG_CARD_META_PAGES, LOG_CARD_META_SIZE, LOG_CARD_UNITS, LOG_MIN_ALIGNMENT, MAX_ALIGNMENT, MAX_BYTES_PADDING, MAX_INT, MIN_ALIGNMENT, MIN_INT, SUPPORT_CARD_SCANNING |
Methods inherited from class org.mmtk.plan.Plan |
availableMemory, bootTimeWriteBarrier, collectionRequired, concurrentCollectionRequired, enableAllocation, enableCollection, forceFullHeapCollection, freeMemory, fullyBooted, gcInProgress, gcInProgressProper, getAllocationSite, getCollectionReserve, getPagesAvail, getPagesReserved, getSpecializedScanClass, getTotalPages, handleUserCollectionRequest, harnessBegin, harnessEnd, insertPhaseAfter, isCurrentGCNursery, isEmergencyCollection, isInitialized, isInternalTriggeredCollection, isUserTriggeredCollection, lastCollectionFullHeap, lastCollectionWasExhaustive, loadObjectReference, logPoll, notifyExit, poll, printDetailedTiming, printPostStats, printPreStats, printUsedPages, reservedMemory, resetCollectionTrigger, sanityExpectedRC, sanityLinearScan, setGCStatus, stacksPrepared, startGCspyServer, storeObjectReference, stressTestGCRequired, totalMemory, triggerInternalCollectionRequest, usedMemory |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
msSpace
public static final MarkSweepSpace msSpace
MARK_SWEEP
public static final int MARK_SWEEP
SCAN_MARK
public static final int SCAN_MARK
- See Also:
- Constant Field Values
msTrace
public final Trace msTrace
MS
public MS()
collectionPhase
public void collectionPhase(short phaseId)
- Perform a (global) collection phase.
- Overrides:
collectionPhase
in class Simple
- Parameters:
phaseId
- The unique id of the phase to perform.
getPagesUsed
public int getPagesUsed()
- Return the number of pages reserved for use given the pending
allocation.
The superclass accounts for its spaces, we just
augment this with the mark-sweep space's contribution.
- Overrides:
getPagesUsed
in class Plan
- Returns:
- The number of pages reserved given the pending
allocation, excluding space reserved for copying.
willNeverMove
public boolean willNeverMove(ObjectReference object)
- Can this object ever move. Used by the VM to make decisions about
whether it needs to copy IO buffers etc.
- Overrides:
willNeverMove
in class Plan
- Parameters:
object
- The object in question
- Returns:
true
if it is not possible that the object will ever move.
registerSpecializedMethods
protected void registerSpecializedMethods()
- Description copied from class:
Plan
- Register specialized methods.
- Overrides:
registerSpecializedMethods
in class Plan