此文档来源于CoreCLR的BOTR(The Book of the Runtime), 点击打开原文
一切著作权归微软公司所有

GC的设计

作者: Maoni Stephens (@maoni0) - 2015

提示: 推荐看 The Garbage Collection Handbook 这本书学习更多关于GC的知识 (在文章底部的链接中)

组件结构

在GC中有两个主要的组件, 一个是分配器(Allocator), 另一个是收集器(Collector).
分配器负责获取更多的内存并且在适当的时机触发收集器.
收集器负责回收垃圾和不再被程序使用的对象内存.

此外还有一些途径可以触发收集器, 例如手动调用GC.Collect函数或析构线程(Finalizer Thread)收到一个内存不足的异步通知(由收集器发送).

分配器的设计

分配器由运行引擎(Execution Engine (EE))调用, 调用时会带有以下的信息: