从以前的 java 经验中,我知道如果两个 GUI 类对象包含彼此的成员变量引用,则可能存在内存泄漏,直到两个对象都被销毁。
这种情况调试起来非常混乱,所以我想使用严格的指导方针来避免现在在 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)
如您所见,我有一个调用 parent_window 的嵌套函数,该函数仅包含在类方法的本地范围内(“make_child_window”)。这是作弊吗?在较低级别上,python 本质上是否将我的“parent_window”存储为类变量?对于将 child_window 与内存中的 parent_window 隔离开来,您还有哪些其他建议?