在python中诊断内存泄漏

2024-05-21 08:46:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我把它固定在一个_SetContainer对象上,但似乎不明白为什么这个对象会一直存在于内存中。以下是objgraph.show_refs的结果:

show_refs

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

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


Tags: 对象实例内存httpsobjgraphgithubcomshow
1条回答
网友
1楼 · 发布于 2024-05-21 08:46:47

它主要是根据objgraph的输出进行猜测,但似乎实例处于一个循环中,它的类有一个__del__。在这种情况下,对象在CPython中永远保持活动状态。检查方法:

import gc; gc.collect(); print gc.garbage

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

相关问题 更多 >