我一直在尝试使用 objgraph 调试 Coopr 包中的内存泄漏:https://gist.github.com/3855150
我已将其固定到 _SetContainer
对象,但似乎无法弄清楚为什么该对象会持久存在于内存中。这是 objgraph.show_refs
的结果:
如何找到循环引用以及如何让垃圾收集器收集 _SetContainer
实例?
我之前认为类本身可能具有自引用(上图中右侧类下方的元组)。但是 objgraph 始终将继承的类显示为具有自引用元组。可以看到一个很简单的测试用例here .
最佳答案
主要是从objgraph的输出中猜测出来的,但是貌似这个实例在一个循环中,它的类有一个__del__
。在这种情况下,对象在 CPython 中永远保持事件状态。检查它:
导入 gc; gc.collect();打印 gc.garbage
关于python - 诊断python中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12961724/