python 回收机制
- 引用计数
- 每个对象维护一个 ob_refcnt 字段。每当对象被引用时计数加 1,引用失效时减 1。
- 标记清楚
- 寻找根对象:从全局变量、调用栈等根集合出发。
- 标记:遍历所有可达对象并打上标记。
- 清除:遍历内存中所有对象,将没有标记(不可达)的对象销毁。
- 分代回收
- 将内存对象分为三代(0代、1代、2代)。
- 0代:新创建的对象。
- 1代:在一次 GC 中幸存的对象。
- 2代:多次 GC 后依然存活的常驻对象。
- 策略:存活时间越久的对象越不可能是垃圾。因此,0代回收最频繁,2代回收频率最低。当某一代的对象数量达到预设阈值(Threshold)时,触发该代及更年轻代的回收。
本文作者:曹子昂
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!