首页 > 解决方案 > 如何获取对象的引用链,不包括弱引用?

问题描述

我目前正在尝试查找内存泄漏的原因。我发现了导致它的对象,我想使用下面的代码片段(来自 objgraph 教程,关于如何打印 backref 链)。

objgraph.show_chain(
               objgraph.find_backref_chain(
                    random.choice('MyBigFatObject'),
                    objgraph.is_proper_module),
                output=string_io)

查看源代码,似乎它做了一个 bfs 来获取从对象到垃圾收集器根的最短路径。

我的问题是所有正在创建的链都包含一个weakref,如果我理解正确,它不是会导致内存泄漏的链。我希望能够看到只有引用的引用链,但我永远看不到它们,因为首先找到了使用弱引用的路径。

有没有办法使用 objgraph 来获取引用链并排除任何包含弱引用的路径?

标签: python-3.xmemory-leaksreferenceweak-referencesobjgraph

解决方案


推荐阅读