python - 诊断python中的内存泄漏

标签 python memory-leaks objgraph

我一直在尝试使用 objgraph 调试 Coopr 包中的内存泄漏:https://gist.github.com/3855150

我已将其固定到 _SetContainer 对象,但似乎无法弄清楚为什么该对象会持久存在于内存中。这是 objgraph.show_refs 的结果:

show_refs

如何找到循环引用以及如何让垃圾收集器收集 _SetContainer 实例?

我之前认为类本身可能具有自引用(上图中右侧类下方的元组)。但是 objgraph 始终将继承的类显示为具有自引用元组。可以看到一个很简单的测试用例here .

最佳答案

主要是从objgraph的输出中猜测出来的,但是貌似这个实例在一个循环中,它的类有一个__del__。在这种情况下,对象在 CPython 中永远保持事件状态。检查它:

导入 gc; gc.collect();打印 gc.garbage

http://docs.python.org/library/gc.html#gc.garbage

关于python - 诊断python中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12961724/

相关文章:

c - getline 和 strsep 的内存泄漏

python - 调试 Python/NumPy 内存泄漏

Python操作系统输出

使用 pygame.quit() 关闭后的 Python Pygame 在不停止整个脚本并重新启动的情况下无法再次打开它

visual-studio - 什么是 [Cycle Detected] 内存泄漏?

python - 泄漏 TarInfo 对象

Python 无法识别由 PYTHONPATH 设置的模块

python - ConfigParser 不支持的操作数类型

java - DeleteOnExitHook 上的内存泄漏