public final class ExplicitFreeListSpace extends SegregatedFreeListSpace
SegregatedFreeListSpace.Sweeper
Space.SpaceVisitor
Modifier and Type | Field and Description |
---|---|
static int |
GC_HEADER_WORDS_REQUIRED |
static int |
GLOBAL_GC_BITS_REQUIRED |
static int |
LOCAL_GC_BITS_REQUIRED |
availableBlockHead, consumedBlockHead, flushedBlockHead, LAZY_SWEEP, lock, MAX_CELL_SIZE, MAX_CELLS, MAX_FREELIST_OBJECT_BYTES, META_DATA_PAGES_PER_REGION_NO_BITMAP, META_DATA_PAGES_PER_REGION_WITH_BITMAP, MIN_CELLS, WORST_CASE_FRAGMENTATION
AVAILABLE_BYTES, AVAILABLE_END, AVAILABLE_PAGES, AVAILABLE_START, BYTES_IN_CHUNK, contiguous, descriptor, extent, headDiscontiguousRegion, HEAP_END, HEAP_START, immortal, LOG_ADDRESS_SPACE, LOG_BYTES_IN_CHUNK, MAX_CHUNKS, MAX_SPACES, movable, PAGES_IN_CHUNK, pr, start, zeroed
Constructor and Description |
---|
ExplicitFreeListSpace(String name,
VMRequest vmRequest)
The caller specifies the region of virtual memory to be used for
this space.
|
Modifier and Type | Method and Description |
---|---|
protected Address |
advanceToBlock(Address block,
int sizeClass)
Prepare the next block in the free block list for use by the free
list allocator.
|
void |
free(ObjectReference object)
Free an object.
|
boolean |
isLive(ObjectReference object)
Is the object in this space alive?
|
protected boolean |
maintainSideBitmap() |
protected void |
notifyNewBlock(Address block,
int sizeClass)
Notify that a new block has been installed.
|
void |
prepare()
Prepare for a new collection increment.
|
protected boolean |
preserveFreeList() |
void |
release()
A new collection increment has completed.
|
void |
release(Address start)
Release an allocated page or pages
|
ObjectReference |
traceObject(TransitiveClosure trace,
ObjectReference object)
Trace a reference to an object under a mark sweep collection
policy.
|
clearAllBlockMarks, clearBlockMark, clearLiveBit, clearLiveBit, clearLiveBits, consumeBlocks, containsLiveCell, flushAvailableBlocks, getAllocationBlock, getBaseCellSize, getFreeList, getSizeClass, isCellLive, liveBitSet, liveBitSet, makeFreeList, markBlock, markBlock, parallelSweepCells, reclaimCellForObject, returnBlock, returnConsumedBlock, setFreeList, sizeClassCount, sweepBlock, sweepCells, sweepCells, sweepConsumedBlocks, testAndSetLiveBit, unsyncClearLiveBit, unsyncClearLiveBit, unsyncSetLiveBit, zeroLiveBits
acquire, availablePhysicalPages, chunkAlign, chunkAlign, committedPages, cumulativeCommittedPages, eagerlyMmapMMTkContiguousSpaces, eagerlyMmapMMTkDiscontiguousSpaces, eagerlyMmapMMTkSpaces, getDescriptor, getDiscontigEnd, getDiscontigStart, getExtent, getFracAvailable, getHeadDiscontiguousRegion, getIndex, getName, getSpaceCount, getSpaceForAddress, getSpaceForObject, getSpaces, getStart, growDiscontiguousSpace, growSpace, isImmortal, isImmortal, isInSpace, isInSpace, isMappedAddress, isMappedObject, isMovable, isMovable, isReachable, printUsageMB, printUsagePages, printVMMap, releaseAllChunks, releaseDiscontiguousChunks, requiredChunks, reservedPages, setZeroingApproach, skipConcurrentZeroing, triggerConcurrentZeroing, visitSpaces
public static final int LOCAL_GC_BITS_REQUIRED
public static final int GLOBAL_GC_BITS_REQUIRED
public static final int GC_HEADER_WORDS_REQUIRED
public ExplicitFreeListSpace(String name, VMRequest vmRequest)
name
- The name of this space (used when printing error messages etc)vmRequest
- An object describing the virtual memory requested.protected boolean maintainSideBitmap()
maintainSideBitmap
in class SegregatedFreeListSpace
protected boolean preserveFreeList()
preserveFreeList
in class SegregatedFreeListSpace
protected Address advanceToBlock(Address block, int sizeClass)
advanceToBlock
in class SegregatedFreeListSpace
block
- The block to be prepared for usesizeClass
- The size class of the blockprotected void notifyNewBlock(Address block, int sizeClass)
SegregatedFreeListSpace
notifyNewBlock
in class SegregatedFreeListSpace
block
- The new blocksizeClass
- The block's sizeclass.public void free(ObjectReference object)
object
- The object to be freed.public void prepare()
public void release()
public ObjectReference traceObject(TransitiveClosure trace, ObjectReference object)
traceObject
in class Space
object
- The object to be traced.trace
- The trace being conducted.public boolean isLive(ObjectReference object)
Space