标签:计数器 收集 另一个 老年 为我 pytho list 个数 img
下面对于三种回收机制进行具体解释:
引用计数(主要)
引用计数的意思就是,一个对象在被New方法创建出来的时候因为被New方法引用,所以他的引用计数就是1.如果他被其他对象引用(例如b=a,被丢入函数列表等待就会在引用计数上加1),如果引用它的对象被删除(在之前的基础上DEL b)那么它的引用计数就会减少,知道引用计数变为0,垃圾回收机制就会将它回收.
优/缺点:
缺点:
维护性高(简单实时,但额外占用了一部分资源,虽然逻辑简单,但是麻烦)
不能解决的问题:循环引用
a=[1,2]
b=[2,3]
a.append(b)
b.append(a)
DEL a
DEL b
说实话感觉有点像死锁问题,这种问题出现在可以循环的结构中LIst,Dict,Object等待,如果代码a,b之间的引用都为1,而a,b被引用的对象删除后各自减去1(所以他们各自的引用计数还是1)这种情况就无法解决了,也就为我们引入了下面的主题:标记-清除
标记-清除
标记清除就是用来解决循环引用的问题的,只有容器对象才会出现引用循环,比如列表,类,字典,元组.首先,为了追踪容器对象,需要每个容器对象维护两个额外的指针,用来将而容器对象组成一个链表,指针分别指向前后两个容器对象,方便插入和删除操作.
例如,现有两种情况
A:
a = [1,3]
b = [2,4]
a.append(b)
b.append(a)
del a
del b
B:
a =[1,3]
b = [2,4]
a.append[b]
b.append(a)
del a
分代回收
标签:计数器 收集 另一个 老年 为我 pytho list 个数 img
原文地址:https://www.cnblogs.com/Yongzyw/p/11520483.html