3
我有一個長期運行的進程,不斷分配和釋放對象。儘管對象正在被釋放,但RSS存儲器的使用量會隨着時間的推移而增加。在Python中計算內存碎片
我該如何計算有多少碎片發生了?一種可能性是計算RSS/sum_of_allocations並將其作爲指標。即使如此,我該如何計算分母(sum_of_allocations)。
我有一個長期運行的進程,不斷分配和釋放對象。儘管對象正在被釋放,但RSS存儲器的使用量會隨着時間的推移而增加。在Python中計算內存碎片
我該如何計算有多少碎片發生了?一種可能性是計算RSS/sum_of_allocations並將其作爲指標。即使如此,我該如何計算分母(sum_of_allocations)。
查看垃圾收集器界面,gc。
http://docs.python.org/2/library/gc.html
可以檢查對象是否被跟蹤與gc.get_objects()
「作爲一般規則,原子類型的實例是不被跟蹤和容器非原子類型的實例( ,用戶定義的對象...)都是。「
還有gc.garbage,它可以找到無法釋放但無法訪問的對象。
你爲什麼認爲這是內存碎片問題?嘗試[Python內存分析器](http://stackoverflow.com/questions/110259/python-memory-profiler) – jfs
@ J.F.Sebastian我準備下一步做。但是Python已知爲分配/釋放小塊內存的長期存在的進程片段化內存。 – Ali
@ J.F.Sebastian因此,使用探查器,你如何判斷碎片是否發生?你只是總結內存分配,並與RSS進行比較? – Ali