Python垃圾回收机制
Python垃圾回收机制
引用计数
引用计数-1的条件
- 对象被显式销毁,如
del a
。 - 变量重新赋予新的对象,例如
a=0
。 - 对象离开它的作用域,如
func
函数执行完毕时,func
函数中的局部变量(全局变量不会)。 - 对象所在的容器被销毁,或从容器中删除对象。
标记-清除
- 标记阶段。将所有的对象看成图的节点,根据对象的引用关系构造图结构。从图的根节点遍历所有的对象,所有访问到的对象被打上标记,表明对象是“可达”的。
- 清除阶段。遍历所有对象,如果发现某个对象没有标记为“可达”,则就回收。
分代收集原理
分代回收基于这样的法则:
- 接大部分的对象生命周期短,大部分对象都是朝生夕灭。
- 经历越多次数的垃圾收集且活下来的对象,说明该对象越不可能是垃圾,应该越少去收集。
https://blog.csdn.net/m0_72557783/article/details/125730729?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-125730729-blog-124813102.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_index=3