public final class ExplicitFreeListSpace extends SegregatedFreeListSpace
SegregatedFreeListSpace.SweeperSpace.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_FRAGMENTATIONAVAILABLE_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, zeroLiveBitsacquire, 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, visitSpacespublic 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 SegregatedFreeListSpaceprotected boolean preserveFreeList()
preserveFreeList in class SegregatedFreeListSpaceprotected Address advanceToBlock(Address block, int sizeClass)
advanceToBlock in class SegregatedFreeListSpaceblock - The block to be prepared for usesizeClass - The size class of the blockprotected void notifyNewBlock(Address block, int sizeClass)
SegregatedFreeListSpacenotifyNewBlock in class SegregatedFreeListSpaceblock - 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 Spaceobject - The object to be traced.trace - The trace being conducted.public boolean isLive(ObjectReference object)
Space