|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.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 SegregatedFreeListSpaceprotected boolean preserveFreeList()
SegregatedFreeListSpace
preserveFreeList in class SegregatedFreeListSpace
protected Address advanceToBlock(Address block,
int sizeClass)
advanceToBlock in class SegregatedFreeListSpaceblock - The block to be prepared for usesizeClass - The size class of the block
protected void notifyNewBlock(Address block,
int sizeClass)
SegregatedFreeListSpace
notifyNewBlock 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 void release(Address start)
release in class Spacestart - The address of the start of the page or pages
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
isLive in class Spaceobject - 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 | ||||||||||