# -*- encoding: utf-8 -*-
import gc
'''
第59條: 用tracemalloc來掌握記憶體的使用及洩露情況
關鍵:
1 python記憶體管理
本質: 通過引用計數來 + 循環檢測器
作用:
1)當某個對象全部引用過期的時候,被引用對象可以得到清理
2) 來即回收機制能把自我引用對象清除
2 調試記憶體使用狀況
方法1: 使用gc子產品進行查詢,列出來即收集器目前所知的每個對象
import gc
objs = gc.get_objects()
python2還可以使用heapy包等追蹤記憶體使用量
方法2: python3.4推出新的内置子產品,叫做tracemalloc
可以把某個對象與該對象的記憶體配置設定點聯系起來
用法:
import tracemalloc
tracemalloc.start(10)
time1 = tracemalloc.take_snapshow()
import waste_memory
x = waste_memory.run()
time2 = tracemalloc.take_snapshow()
stats = time2.compare_to(time1, 'lineno')
for stat in stats[:3]:
print stat
參考:
Effectiv Python 編寫高品質Python代碼的59個有效方法
'''
def useGC():
objs = gc.get_objects()
print "%d objects before" % (len(objs))
def process():
useGC()
if __name__ == "__main__":
process()