引用计数器为主,标记清楚和分代回收为辅
1.引用计数器
引用计数器同上内存管理中的描述
引用计数器会出现循环引用
(1)
a =[1,2]
b =[4,5]
a.append(b)# a中的第三个元素指向b,b的计数器发生变化,变成2了
(2)
del a
del b
# 当这种代码特别多的时候,内存的占用也会特别多,内存占用特别多的时候会造成内存泄漏(溢出)2.标记清除
标记清除可以用来解决内存泄漏的问题
针对那些容器类型的对象,在Python中会将他们单独放到一个双向链表中,做定期扫描,检查是否有循环引用,如果有各自-1,如果-1之后等于0,则直接回收。
3.分代回收
为了减少对象的扫描,将没有问题的对象让他放到上一级的链表中,默认下一级扫描10次上一级才扫描1次,一共有三代链表