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: ChunkMapAllocation 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: AtomicUsizeCount the number of pending ReleaseMarkSweepSpace and ReleaseMutator work packets during
the Release stage.