我目前正在尝试查找内存泄漏的原因。我发现了导致它的对象,我想使用下面的代码片段(来自 objgraph 教程,关于如何打印 backref 链)。
objgraph.show_chain(
objgraph.find_backref_chain(
random.choice('MyBigFatObject'),
objgraph.is_proper_module),
output=string_io)
查看源代码,似乎它做了一个 bfs 来获取从对象到垃圾收集器根的最短路径。
我的问题是所有正在创建的链都包含一个weakref,如果我理解正确,它不是会导致内存泄漏的链。我希望能够看到只有强引用的引用链,但我永远看不到它们,因为首先找到了使用弱引用的路径。
有没有办法使用 objgraph 来获取引用链并排除任何包含弱引用的路径?