不确定我是否做了明显错误的事情,但以下Python代码似乎在泄漏内存:
class A(object):
def __init__(self):
class B(object):
pass
for i in range(0, 100):
a = A()
a = None
根据我对Python的垃圾收集的理解,创建的所有对象应该在本示例程序的末尾进行垃圾收集。但是,堆上的对象左侧浮动。对象的数量随着循环的数量而增长,但是这是次线性的。
如果我评论内部课程B
,它就不会泄漏了。
这个虚拟示例已使用guppy
和Python 2.7.12进行了测试。我没有使用Python 3测试它,但我们观察到运行我们的软件的相同效果最初产生了Python 2和3下的错误。