我正在使用Tkinter和Python 2.7构建应用程序。
我在此应用程序中发生内存泄漏。在寻找原因时,我发现有很多TKinter.CallWrapper
实例泄漏。
这些实例仅具有instancemethod __call__(bound)
类型的对其进行引用。
这是使用以下行的objgraph
的输出(我之前用gc.collect()
强制进行了垃圾回收。):
objgraph.show_backrefs(objgraph.get_leaking_objects(objgraph.by_type('Tkinter.CallWrapper'))[502:504], output=f, max_depth=10**100)
。
我无法以较低的比例复制此代码,因此我没有任何可运行的代码。
如何将这些实例保留在内存中?它们不是参考循环的一部分,也不会从任何框架或全局变量中进行引用。还有其他我可能不知道的可能原因吗?
我应该从哪里开始调查?