关键词:
引用计数器
垃圾回收
标记清除
分代回收
缓存机制
在python中维护着一个叫refchain的双向链表,所有创建的对象都会被放到这个链表中,并且会为每一个对象创建一个引用计数器,初始值为1,当计数器的值为0时,python会认为他不被引用并进行 垃圾回收,但对于那些多元素对象而言(比如链表,集合等),可能会出现循环引用的问题,导致计数器不会变为0而一直存在在内存中占用内存,针对这一现象,python引入了标记清除和分代回收机制,python使用额外的三个链表来存储多元素对象并记录着他们的互相引用关系,当第一个链表的值达到700个时,python会对其进行扫描并进行相应的清除,然后将剩余的对象放入第二个链表中,当第一个链表对第二个链表进行十次添加操作时,第二个链表便会开始扫描并清除,然后将剩余对象放入第三个链表,第三个链表执行跟第二个链表相同的操作
![](https://img-blog.csdnimg.cn/img_convert/c15d7345da2f391874aba0606f6f59fd.png)