Python学习————垃圾回收机制

垃圾回收机制

1、引用计数

x = 10 # 直接引用
print(id(x))
y = x
z = x

l = ['a', 'b', x] # 间接引用
print(id(l[2])) #

d = {'mmm': x} # 间接引用

print(id(d['mmm']))


x=10
l=['a','b',x] # l=['a'的内存地址,'b'的内存地址,10的内存地址]

x=123
print(l[2])


x=10
x=[10,]

l=['a','b',10]


2、标记清除
标记清除:用来解决循环引用带来的内存泄露问题
循环引用=>导致内存泄露
l1=[111,]
l2=[222,]

l1.append(l2) # l1=[值111的内存地址,l2列表的内存地址]
l2.append(l1) # l2=[值222的内存地址,l1列表的内存地址]

print(id(l1[1]))
print(id(l2))

print(id(l2[1]))
print(id(l1))

print(l2)
print(l1[1])

del l1
del l2

3、分代回收
分代回收:用来降低引用计数的扫描频率,提升垃圾回收的效率
(python将内存根据对象的存活时间划分为不同的集合,每个集合称为一个代,比如有年轻代、中年代、老年代,年轻代最先被回收)
原文地址:https://www.cnblogs.com/x945669/p/12421997.html