Skip to content

Latest commit

 

History

History
12 lines (9 loc) · 674 Bytes

gc.md

File metadata and controls

12 lines (9 loc) · 674 Bytes

GC算法

  • 标记清除:从一些任何时候都可以访问的对象出发,例如线程内的栈,将能触及到的对象都做一个标记。第二步,扫描全部对象,清除 没有标记的对象。

  • 引用计数:对每个对象增加引用时,引用计数+1,反之-1。引用计数为0则回收对象

  • 拷贝:把整个堆里,可以触及的对象拷贝到另外一个地方

  • 分代回收:按对象的年龄划分

  • Python的GC算法:引用计数为主,分代回收为辅,从容器对象出发,减少一个引用,看是否为0,为0则回收。越老的对象生存的对象可能 会更久。

  • Go的GC算法:标记清除。