Golang的垃圾回收
这里先介绍三个不同的方法
https://zhuanlan.zhihu.com/p/105571503
Mark-And-Sweep Collection (McCarthy, 1960)
如下图,红色表示需要回收的,也被叫做non-reachable。绿色的node表示在heap外的指针
接下来是Mark的部分,每个block留出一个bit。见下图
下面是具体的算法: Mark & Sweep
Copying Garbage Collection
优点:减小内存碎片
缺点:浪费空间(2倍)
https://www.youtube.com/watch?v=P1rU_9IB414
Tri-Color marking
https://zhuanlan.zhihu.com/p/105495961
其中writing barrier可以将mark过程中,新出现的指针指向的block标记为黑色