从以前的java经验,我知道,如果两个GUI类对象包含对方的成员变量引用,可能会有内存泄漏,直到两个对象被销毁。python嵌套函数内存泄漏?
这种情况是非常混乱的调试,所以我想与严格的指导方针,以避免现在在python内存泄漏。
我现在有一个GUI系统,其中有一个主窗口(parent_window),并弹出一个带有用户辅助选项许多子窗口(子窗口)等
我想到了一个简单的方法来防止内存泄漏是不要在所有子窗口中保留父窗口的类成员变量。
class child_window(object):
def make_child_window(self, parent_window):
def on_ok(): parent_window.show()
QtCore.QObject.connect(self.okbutton, QtCore.SIGNAL("clicked()"), on_ok)
,你可以看到,我有一个调用它仅包含在类方法(“make_child_window”)的局部范围parent_window一个嵌套函数。这是作弊吗?在较低的水平python实质上存储我的“parent_window”作为类变量?你有什么其他的建议将child_window从内存中的parent_window中分离出来?
请参阅[我应该担心Python中的循环引用?](http://stackoverflow.com/questions/2428301/should-i-worry-about-circular-references-in-python)。 – 2012-08-07 19:44:41
特别是,我认为[这个答案](http://stackoverflow.com/a/2428888/600110)有你需要的所有信息。 – 2012-08-07 20:12:27
很有帮助,虽然他的帖子不像我想要的那么技术性。如果python有一个更复杂的(或更好地调整GC的循环引用的GUI),那么很好。否则,病态需要等到我完成这个第一个项目才能掌握它的能力。 – ecoe 2012-08-08 15:36:24