在Python中跟踪特定对象的引用(内存泄漏)

问题描述 投票:0回答:1

我有一个第三方库,造成巨大的内存泄漏。我已经调用了

gc.collect
,并且没有对该库创建的任何对象的引用,但它仍然泄漏。

使用

gc.get_objects()
我已经识别出许多不应该存在的对象,因为它们特定于这个库。

如何跟踪哪些对象使这些泄漏的对象保持活动状态(目标是将其跟踪到全局变量/列表,我可以重置该变量/列表以修复泄漏)?

文件和行号会很好,但即使拥有持有者对象的实例也会有很大帮助。

python memory-leaks
1个回答
0
投票

你可以尝试

gc.get_referrers
。演示:

import gc

def test():
    a = ['foo', b := {'bar'}]
    for r in gc.get_referrers(b):
        print(r)

test()

输出(在线尝试!):

['foo', {'bar'}]
© www.soinside.com 2019 - 2024. All rights reserved.