|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.mmtk.policy.Space org.mmtk.policy.SegregatedFreeListSpace org.mmtk.policy.ExplicitFreeListSpace
public final class ExplicitFreeListSpace
Each instance of this class corresponds to one *space*. Each of the instance methods of this class may be called by any thread (i.e. synchronization must be explicit in any instance or class method). This contrasts with the MarkSweepLocal, where instances correspond to *plan* instances and therefore to kernel threads. Thus unlike this class, synchronization is not necessary in the instance methods of MarkSweepLocal.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.mmtk.policy.SegregatedFreeListSpace |
---|
SegregatedFreeListSpace.Sweeper |
Nested classes/interfaces inherited from class org.mmtk.policy.Space |
---|
Space.SpaceVisitor |
Field Summary | |
---|---|
static int |
GC_HEADER_WORDS_REQUIRED
|
static int |
GLOBAL_GC_BITS_REQUIRED
|
static int |
LOCAL_GC_BITS_REQUIRED
|
Fields inherited from class org.mmtk.policy.SegregatedFreeListSpace |
---|
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 |
Fields inherited from class org.mmtk.policy.Space |
---|
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 Summary | |
---|---|
ExplicitFreeListSpace(String name,
VMRequest vmRequest)
The caller specifies the region of virtual memory to be used for this space. |
Method Summary | |
---|---|
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()
Should SegregatedFreeListSpace manage a side bitmap to keep track of live objects? |
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()
Do we need to preserve free lists as we move blocks around. |
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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int LOCAL_GC_BITS_REQUIRED
public static final int GLOBAL_GC_BITS_REQUIRED
public static final int GC_HEADER_WORDS_REQUIRED
Constructor Detail |
---|
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.Method Detail |
---|
protected boolean maintainSideBitmap()
SegregatedFreeListSpace
maintainSideBitmap
in class SegregatedFreeListSpace
protected boolean preserveFreeList()
SegregatedFreeListSpace
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 block
protected 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 void release(Address start)
release
in class Space
start
- The address of the start of the page or pagespublic 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
isLive
in class Space
object
- The object reference.
true
if this object is known to be live (i.e. it is marked)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |