美文网首页
大师兄的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