golang gc

本文阅读 2 分钟
首页 golang 正文
题目序号:(153, 154, 155, 10)
题目来源: 字节跳动,深信服,米哈游
频次: 3

答案1:(阿纪、)

  1. 对【40. go的GC(标记清理 -> 三色标记发 -> 混合写屏障)】补充:
    Q: 那如果用户在并发CMS期间改了引用,写屏障如何保证三色不变性:
    A: 插入屏障和删除屏障共同保证
    插入写屏障:对象A引用C,A黑C白,会把C加入写屏障buf,最终flush到扫描队列。
    删除屏障:被删除的对象,如果自身为灰色或者白色,那么被标记为灰色。(保护灰色到白色的路径不会断)。
    插⼊写屏障和删除写屏障的短板:
    插⼊写屏障:结束时需要STW来重新扫描栈,标记栈上引⽤的⽩⾊对象的存活;
    删除写屏障:回收精度低,GC开始时STW扫描堆栈来记录初始快照,这个过程会保护开始时刻的所有存活对象。
本文来自投稿,不代表本站立场,如若转载,请注明出处:
syncpool的实现原理
« 上一篇 09-17
问了sync.Map(我说我对sync.Pool比较熟,就说Pool了)
下一篇 » 09-17

发表评论

发表评论