Go语言mallocgc

runtime中new和make都依赖mallocgc。

mallocgc分为4个阶段:辅助GC,空间分配,位图标记,收尾工作。

辅助GC

若在申请内存时,正处在GC阶段。所以G需要按借债尝还的方式,扫描多少得多少,并且多出来的部分下次还能用。此外,还能窃取后台GCmark,若能窃取足够的内存,则不用辅助GC。

空间分配

Go语言mallocgc_第1张图片

 大于32KB 直接从heap获取。

<16B tiny allocator获取。

Go语言mallocgc_第2张图片

 Go语言mallocgc_第3张图片

 位图标记

Go语言mallocgc_第4张图片

 

 收尾

Go语言mallocgc_第5张图片

 

你可能感兴趣的:(Go语言,golang,go,开发语言,后端)