pub type MarkSweepSpace<VM> = MarkSweepSpace<VM>;
Aliased Type§
struct MarkSweepSpace<VM> {
pub common: CommonSpace<VM>,
pr: BlockPageResource<VM, Block>,
chunk_map: ChunkMap,
scheduler: Arc<GCWorkScheduler<VM>>,
abandoned: Mutex<AbandonedBlockLists>,
abandoned_in_gc: Mutex<AbandonedBlockLists>,
pending_release_packets: AtomicUsize,
}
Fields§
§common: CommonSpace<VM>
§pr: BlockPageResource<VM, Block>
§chunk_map: ChunkMap
Allocation status for all chunks in MS space
scheduler: Arc<GCWorkScheduler<VM>>
Work packet scheduler
abandoned: Mutex<AbandonedBlockLists>
Abandoned blocks. If a mutator dies, all its blocks go to this abandoned block lists. We reuse blocks in these lists in the mutator phase. The space needs to do the release work for these block lists.
abandoned_in_gc: Mutex<AbandonedBlockLists>
Abandoned blocks during a GC. Each allocator finishes doing release work, and returns their local blocks to the global lists. Thus we do not need to do release work for these block lists in the space. These lists are only filled in the release phase, and will be moved to the abandoned lists above at the end of a GC.
pending_release_packets: AtomicUsize
Count the number of pending ReleaseMarkSweepSpace
and ReleaseMutator
work packets during
the Release
stage.