美文网首页
大师兄的Python源码学习笔记(五十九): Python的内存

大师兄的Python源码学习笔记(五十九): Python的内存

作者: superkmi | 来源:发表于2022-03-18 19:01 被阅读0次

大师兄的Python源码学习笔记(五十八): Python的内存管理机制(十三)

五、Python中的垃圾收集

5. gc模块
  • Python中可以通过gc模块观察和手动调用gc机制的接口。
  • 通过一个案例可以看出,对于引用计数机制能正常维护的对象,垃圾收集不起作用:
>>>import gc

>>>class A:
>>>    ...

>>>class B:
>>>    ...

>>>gc.set_debug(gc.DEBUG_STATS | gc.DEBUG_LEAK)
>>>while True:
>>>    a=A()
>>>    b=B()

>>>    del a
>>>    del b
>>>    gc.collect()
>>>    input()
gc: collecting generation 2...
gc: objects in each generation: 240 1283 4755
gc: objects in permanent generation: 0
gc: done, 0.0000s elapsed
  • 当存在循环引用时,引用计数不起作用,而垃圾收集正常回收内存:
>>>demo.py

>>>import gc

>>>class A:
>>>    ...

>>>class B:
>>>    ...

>>>gc.set_debug(gc.DEBUG_STATS | gc.DEBUG_LEAK)
>>>while True:
>>>    a=A()
>>>    b=B()
>>>    a.b = b
>>>    b.a = a
>>>    del a
>>>    del b
>>>    gc.collect()
>>>    input()
gc: collecting generation 2...
gc: objects in each generation: 269 1002 4755
gc: objects in permanent generation: 0
gc: collectable <A 0x0000029EB2BB24C8>
gc: collectable <B 0x0000029EB2BB2788>
gc: collectable <dict 0x0000029EB2AFFAE8>
gc: collectable <dict 0x0000029EB2AFFEF8>
gc: done, 4 unreachable, 0 uncollectable, 0.0000s elapsed

相关文章

网友评论

      本文标题:大师兄的Python源码学习笔记(五十九): Python的内存

      本文链接:https://www.haomeiwen.com/subject/taukdrtx.html