【发布时间】:2009-07-14 20:29:34
【问题描述】:
gc.get_referrers(obj) 是否可以为一个对象返回一个空列表,但仍然可以通过弱引用访问该对象?
如果是这样,我将如何开始尝试确定该对象未被垃圾收集的原因?
编辑:我不确定代码示例在这种情况下究竟有什么帮助 - 显然某处有很强的参考,但如果我能找到它,我会被诅咒的。我的印象是所有对对象的强引用都会被 get_referrers() 识别。
编辑:已解决。我发现该变量具有强引用 - 它在游戏事件循环中,但不是类变量,因此 get_referrers 没有选择它。
【问题讨论】:
-
请给出一个简单的代码示例。否则不清楚你的意思。弱引用本身是可访问的,还是被引用对象本身可以通过弱引用访问?
-
您是如何找到带有引用的变量的?我正试图追踪这样的泄漏,但它是间歇性的,并且 gc.get_referrers 正在返回 []。有没有办法找到对象的“本地”引用在哪里?
标签: python garbage-collection cpython