我有一个长时间运行的进程,它不断地分配和释放对象。虽然对象正在被释放,但RSS内存使用量会随着时间的推移而增加。
如何计算碎片发生的程度?一种可能性是计算RSS / sum_of_allocations并将其作为指标。即便如此,如何计算分母(sum_of_allocations)。
答案 0 :(得分:1)
查看垃圾收集器界面,gc。
http://docs.python.org/2/library/gc.html
您可以使用gc.get_objects()
检查正在跟踪的对象“作为一般规则,不跟踪原子类型的实例和非原子类型的实例(容器,用户定义的对象......)。”
还有gc.garbage,它可以找到无法释放但无法访问的对象。