浅谈 Python 的垃圾回收机制
Python 的垃圾回收(GC)机制是怎样的?引用计数和标记清除的原理是什么?
回答
Yahuda
Python 使用引用计数为主,标记-清除和分代回收为辅的 GC 机制。
- 引用计数:每个对象维护
ob_refcnt,归零时立即回收。无法解决循环引用。 - 标记-清除:从根对象(如全局变量、栈)出发,标记所有可达对象,清除不可达对象。解决循环引用。
- 分代回收:对象分 3 代(0/1/2),新对象在第 0 代,经过一次 GC 存活则升代。代龄越大,GC 频率越低。
可通过 gc 模块控制:gc.disable()、gc.collect()、gc.get_threshold()。