class A(object):
pass
class B(object):
pass
a = A()
b = B()
a.b = b
b.a = a
del a
del b
# 由于循环引用,a、b对象还没有被销毁。
# gc.collect() # 垃圾回收执行之后,能解除循环引用,a、b才能被销毁,此时查看print(gc.garbage),可见是空
循环引用 + del函数,del不能删除对象的情况
class A(object):
def __del__(self):
pass
class B(object):
def __del__(self):
pass
a = A()
b = B()
a.b = b
b.a = a
del a
del b
# 由于循环引用,a、b对象还没有被销毁。
# gc.collect() # 垃圾回收执行之后,但是由于有__del__方法,a、b对象也还是不能被销毁,此时查看print(gc.garbage),会打印回收不掉的“垃圾”