此文檔來(lái)源于CoreCLR的BOTR(The Book of the Runtime), 點(diǎn)擊打開(kāi)原文
一切著作權(quán)歸微軟公司所有
GC的設(shè)計(jì)
作者: Maoni Stephens (@maoni0) - 2015
提示: 推薦看 The Garbage Collection Handbook 這本書(shū)學(xué)習(xí)更多關(guān)于GC的知識(shí) (在文章底部的鏈接中)
組件結(jié)構(gòu)
在GC中有兩個(gè)主要的組件, 一個(gè)是分配器(Allocator), 另一個(gè)是收集器(Collector).
分配器負(fù)責(zé)獲取更多的內(nèi)存并且在適當(dāng)?shù)臅r(shí)機(jī)觸發(fā)收集器.
收集器負(fù)責(zé)回收垃圾和不再被程序使用的對(duì)象內(nèi)存.
此外還有一些途徑可以觸發(fā)收集器, 例如手動(dòng)調(diào)用GC.Collect函數(shù)或析構(gòu)線程(Finalizer Thread)收到一個(gè)內(nèi)存不足的異步通知(由收集器發(fā)送).
分配器的設(shè)計(jì)
分配器由運(yùn)行引擎(Execution Engine (EE))調(diào)用, 調(diào)用時(shí)會(huì)帶有以下的信息: