【发布时间】:2015-11-02 02:13:18
【问题描述】:
我有一些 python 代码,其中 gc.collect() 似乎释放了大量内存。鉴于 Python 的引用计数性质,我倾向于认为我的程序包含很多循环引用。由于有些数据结构比较大,我想介绍一下弱引用。现在我需要找到循环引用,找到了一些明显的引用,我想知道是否可以检测到循环引用和明确形成环的对象。到目前为止,我只看到了有关如何调用 gc.collect 等的教程。人。
【问题讨论】:
-
这些对象有自定义的
__del__方法吗? -
您可能会发现objgraph 包很有用。它将创建对象之间引用的可视化。 Here's a blog post about circular references and objgraph.
-
我还要提一下,理想情况下,如果可能,您应该首先删除这些循环引用,而不是尝试解决它们:)。