GO GC
参考优秀博文:https://studygolang.com/articles/27243
笔记
三色标记法
从程序的根节点集合中扫描所有对象,标记为白色;从根节点非递归遍历所有可达对象,从白色集合中删除,标记为灰色;遍历灰色集合,将灰色对象应用的对象从白色集合中删除,加入灰色集合中,并将遍历过的灰色对象标记为黑色;重复上一步,直到灰色集合为空;
混合写屏障机制
只对堆空间启用该机制,不对栈空间使用;gc开始时,扫描所有goroutine的栈,并将所有可达对象标记为黑色;gc期间,栈上创建的对象,均为黑色;gc期间,堆上删除的对象,置为灰色;gc期间,堆上创建的对象,置为灰色;
STW
goV1.8之后,gc开始和结束时会各有一次stw,时间极短,效率较高;