org.mmtk.policy
Class MarkSweepLocal
java.lang.Object
org.mmtk.utility.alloc.Allocator
org.mmtk.utility.alloc.SegregatedFreeList<S>
org.mmtk.utility.alloc.SegregatedFreeListLocal<MarkSweepSpace>
org.mmtk.policy.MarkSweepLocal
- All Implemented Interfaces:
- Constants
public final class MarkSweepLocal
- extends SegregatedFreeListLocal<MarkSweepSpace>
- implements Constants
This class implements unsynchronized (local) elements of a
mark-sweep collector. Allocation is via the segregated free list
(@see SegregatedFreeList). Marking is done using both a bit in
each header's object word, and a mark bitmap. Sweeping is
performed lazily.
A free list block is a contiguous region of memory containing cells
of a single size class, and is a construct of the
SegregatedFreeList. This class extends the block to include a mark
bitmap. During the mark phase, if an object is encountered with
the mark bit in its header unset, it is set and the mark bit in the
block header corresponding to that object is set. The rationale
behind this approach is that testing (and setting) the mark bit in
the object header is cheap, while using a bitmap makes sweeping
more efficient. This approach maximizes the speed of the common
case when marking, while also allowing for fast sweeping, with
minimal space overhead (2 bits per object).
- See Also:
SegregatedFreeList
,
MarkSweepSpace
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 |
Method Summary |
void |
prepare()
Prepare for a collection. |
void |
release()
Finish up after a collection. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
MarkSweepLocal
public MarkSweepLocal(MarkSweepSpace space)
- Constructor
- Parameters:
space
- The mark-sweep space to which this allocator
instances is bound.
prepare
public void prepare()
- Prepare for a collection. If paranoid, perform a sanity check.
release
public void release()
- Finish up after a collection.