org.mmtk.plan.semispace
Class SS
java.lang.Object
org.mmtk.plan.Plan
org.mmtk.plan.Simple
org.mmtk.plan.StopTheWorld
org.mmtk.plan.semispace.SS
- All Implemented Interfaces:
- Constants
- Direct Known Subclasses:
- GCTrace, SSGCspy, UsePrimitiveWriteBarriers
public class SS
- extends StopTheWorld
This class implements a simple semi-space collector. See the Jones
& Lins GC book, section 2.2 for an overview of the basic
algorithm. This implementation also includes a large object space
(LOS), and an uncollected "immortal" space.
All plans make a clear distinction between global and
thread-local activities. Global activities must be
synchronized, whereas no synchronization is required for
thread-local activities. Instances of Plan map 1:1 to "kernel
threads" (aka CPUs). Thus instance
methods allow fast, unsychronized access to Plan utilities such as
allocation and collection. Each instance rests on static resources
(such as memory and virtual memory resources) which are "global"
and therefore "static" members of Plan. This mapping of threads to
instances is crucial to understanding the correctness and
performance proprties of this plan.
|
Field Summary |
static int |
ALLOC_SS
Class variables |
static CopySpace |
copySpace0
One of the two semi spaces that alternate roles at each collection |
static CopySpace |
copySpace1
One of the two semi spaces that alternate roles at each collection |
static boolean |
hi
True if allocating into the "higher" semispace |
static int |
SCAN_SS
|
static int |
SS0
|
static int |
SS1
|
Trace |
ssTrace
|
| 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, PRECOPY, 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, awaitingAsyncCollection, collectionTrigger, DEFAULT_MAX_NURSERY, DEFAULT_MIN_NURSERY, DEFAULT_POLL_FREQUENCY, DEFAULT_SITE, emergencyCollection, GATHER_WRITE_BARRIER_STATS, GC_PREPARE, GC_PROPER, HEAP_FULL_MINIMUM, HEAP_FULL_PERCENTAGE, IMMORTAL, immortalSpace, insideHarness, LARGE_CODE, largeCodeSpace, LOS, loSpace, MAX_COLLECTION_ATTEMPTS, MAX_NON_LOS_COPY_BYTES, MAX_NON_LOS_DEFAULT_ALLOC_BYTES, MAX_NON_LOS_NONMOVING_ALLOC_BYTES, META, META_DATA_POLL_FREQUENCY, metaDataSpace, NEEDS_LOG_BIT_IN_HEADER, NON_MOVING, NON_PARTICIPANT, nonMovingSpace, NOT_IN_GC, PLOS_FRAC, requiredAtStart, SANITY, sanityChecker, sanitySpace, SCAN_BOOT_IMAGE, SMALL_CODE, smallCodeSpace, stacksPrepared, timeCap, totalTime, USE_CODE_SPACE, 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 |
|
Constructor Summary |
SS()
Constructor |
| Methods inherited from class org.mmtk.plan.Plan |
availableMemory, boot, bootTimeWriteBarrier, checkForAsyncCollection, collectionComplete, collectionRequired, concurrentCollectionRequired, forceFullHeapCollection, freeMemory, fullyBooted, gcInProgress, gcInProgressProper, getAllocationSite, getHeapFullThreshold, getMetaDataPagesUsed, getPagesReserved, getSpecializedScanClass, getTimeCap, getTotalPages, harnessBegin, harnessEnd, insertPhaseAfter, isCollectionTriggered, isCurrentGCNursery, isEmergencyCollection, isInitialized, lastCollectionFailed, lastCollectionFullHeap, lastCollectionWasExhaustive, loadObjectReference, notifyExit, poll, printDetailedTiming, printPostStats, printPreStats, printUsedPages, reservedMemory, sanityExpectedRC, sanityLinearScan, setAwaitingAsyncCollection, setCollectionTrigger, setCollectionTriggered, setGCStatus, stacksPrepared, startGCspyServer, storeObjectReference, stressTestGCRequired, totalMemory, usedMemory |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
hi
public static boolean hi
- True if allocating into the "higher" semispace
copySpace0
public static final CopySpace copySpace0
- One of the two semi spaces that alternate roles at each collection
SS0
public static final int SS0
copySpace1
public static final CopySpace copySpace1
- One of the two semi spaces that alternate roles at each collection
SS1
public static final int SS1
ssTrace
public final Trace ssTrace
ALLOC_SS
public static final int ALLOC_SS
- Class variables
- See Also:
- Constant Field Values
SCAN_SS
public static final int SCAN_SS
- See Also:
- Constant Field Values
SS
public SS()
- Constructor
toSpace
public static CopySpace toSpace()
- Returns:
- The to space for the current collection.
fromSpace
public static CopySpace fromSpace()
- Returns:
- The from space for the current collection.
collectionPhase
public void collectionPhase(short phaseId)
- Perform a (global) collection phase.
- Overrides:
collectionPhase in class Simple
- Parameters:
phaseId - Collection phase
getCollectionReserve
public final int getCollectionReserve()
- Return the number of pages reserved for copying.
- Overrides:
getCollectionReserve in class Plan
- Returns:
- The number of pages reserved given the pending
allocation, including space reserved for copying.
getPagesUsed
public int getPagesUsed()
- Return the number of pages reserved for use given the pending
allocation. This is exclusive of space reserved for
copying.
- Overrides:
getPagesUsed in class Plan
- Returns:
- The number of pages reserved given the pending
allocation, excluding space reserved for copying.
getPagesAvail
public final int getPagesAvail()
- Return the number of pages available for allocation, assuming
all future allocation is to the semi-space.
- Overrides:
getPagesAvail in class Plan
- Returns:
- The number of pages available for allocation, assuming
all future allocation is to the semi-space.
getPagesRequired
public int getPagesRequired()
- Calculate the number of pages a collection is required to free to satisfy
outstanding allocation requests.
- Overrides:
getPagesRequired in class Plan
- Returns:
- the number of pages a collection is required to free to satisfy
outstanding allocation requests.
willNeverMove
public boolean willNeverMove(ObjectReference object)
- Description copied from class:
Plan
- 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 - Object in question
- Returns:
- True if the object will never move
- See Also:
Plan.willNeverMove(org.vmmagic.unboxed.ObjectReference)
registerSpecializedMethods
protected void registerSpecializedMethods()
- Register specialized methods.
- Overrides:
registerSpecializedMethods in class Plan