python垃圾回收的机制过程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

1、步骤

(1)收集所有容器对象 ( list , dict , tuple , customClass, ... ) ,通过一个双向链表进行引用;

(2)针对每一个容器对象,通过一个变量 gc_refs 来记录当前对应的引用计数;

(3)对于每个容器对象,找到它所引用的容器对象,并将这个容器对象的引用计数 -1;

(4)经过步骤 3 后,如果一个容器对象的引用计数为 0,就代表这个对象可以被回收了,肯定是 "循环引用" 才导致它活到现在的。

2、垃圾回收的周期顺序

0 代 "垃圾回收" 一定次数后,触发 0~1 代回收;

1 代 "垃圾回收" 一定次数后,触发 0~2 代回收。

发表回复