GO 垃圾回收学习笔记

    技术2026-02-13  19

    GO GC

    参考优秀博文:https://studygolang.com/articles/27243

    笔记

    三色标记法

    从程序的根节点集合中扫描所有对象,标记为白色;从根节点非递归遍历所有可达对象,从白色集合中删除,标记为灰色;遍历灰色集合,将灰色对象应用的对象从白色集合中删除,加入灰色集合中,并将遍历过的灰色对象标记为黑色;重复上一步,直到灰色集合为空;

    混合写屏障机制

    只对堆空间启用该机制,不对栈空间使用;gc开始时,扫描所有goroutine的栈,并将所有可达对象标记为黑色;gc期间,栈上创建的对象,均为黑色;gc期间,堆上删除的对象,置为灰色;gc期间,堆上创建的对象,置为灰色;

    STW

    goV1.8之后,gc开始和结束时会各有一次stw,时间极短,效率较高;
    Processed: 0.008, SQL: 9