python3自學之路-筆記25—垃圾回收機制

python3自帶垃圾回收機制,通常靠引用計數器可回收大部分垃圾,但是強引用的循環引用的垃圾沒法回收。自動的GC分三代回收,但有時候在循環引用的情況下需要立即回收,可手動使用。弱引用的循環引用可有效的避免內存泄漏

示例代碼如下

import gc
import objgraph
import weakref
class Person:
    pass
class Dog:
    pass
p = Person()
d = Dog()

p.pet =d
d.master = p  #循環引用,無法釋放垃圾
#d.master = weakref.ref(p) #單個對象弱引用
# weakref.WeakKeyDictionary({"dog":d1,"cat":c1}) #字典對象弱引用
del p
del d
gc.collect()  #手動回收垃圾,無論垃圾回收機制是否開啓
print(objgraph.count("Person"))
print(objgraph.count("Dog"))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章