在另一个python类的构造函数中定义一个类会导致内存泄漏吗?

时间:2017-05-02 14:46:45

标签: python garbage-collection

不确定我是否做了明显错误的事情,但以下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下的错误。

0 个答案:

没有答案