【发布时间】:2014-09-11 13:52:23
【问题描述】:
我正在尝试调试内存泄漏并将其追踪到单个对象,将其称为“父对象”。
gc.get_referents(parent) 表明它正在有效地获得越来越多的对泄漏对象的引用。我试图找出更多关于它是如何发生的信息,但是,inspect.getmembers(parent) 对 gc.get_referents 确实知道的这些引用一无所知:
即
import gc
import inspect
parent = someObject()
dependents = gc.get_referents(parent)
fromInspect = [b for (a,b) in inspect.getmembers(parent) if b in dependents]
notFromInspect = [b for (a,b) in inspect.getmembers(parent) if b not in dependents]
print len(fromInspect)
>>> 3
print len(notFromInspect)
>>> 69
所以有很多对象(其中 69 个!) gc 模块知道,但 inspect 不知道。
gc.get_referents() 如何为 Python 对象构造“引用”对象列表?
我需要查看插槽吗?还有什么?
【问题讨论】:
标签: python memory-leaks garbage-collection