【问题标题】:PyQt: class object deleting, calling destructors but memory not freeingPyQt:类对象删除,调用析构函数但内存不释放
【发布时间】:2017-03-10 02:54:53
【问题描述】:

我正在使用pyQt 创建一个工具,但面临内存泄漏问题。

当我使用自己的垃圾从 UI 中删除包含 python 和 pyQt 成员变量的对象时,它会调用相应类的析构函数。但是当我从终端运行“top”命令时,内存并没有被释放,只要我使用应用程序就会一直占用,最后崩溃了。

【问题讨论】:

  • 向我们展示一个演示问题的小程序。
  • 通常出现这些问题是因为 C++ 对象仍在被引用。如果您已将 QObject 添加到 QT 类层次结构中,它不会被销毁,直到引用被删除或引用被破坏。我很困惑你所说的析构函数是什么意思——这实际上是 C++ 析构函数还是 Python del
  • 析构函数是python del 方法。是的,我也发现 QObject 由于某些问题没有被删除。但我无法找到删除相同和空闲内存的方法。
  • 为什么不分享一些代码?我确定某处有对该对象的引用
  • 使用 Python 时的显式内存管理通常表明存在更潜在的问题。我认为您的用例的更清晰示例和一些用于演示该问题的最少代码在这里会非常有帮助。

标签: python qt memory memory-leaks pyqt


【解决方案1】:

我之前已经遇到过这个问题。 我使用了这种方法,对我来说效果很好:

widget.setParent(None)
widget.deleteLater()

希望对你有帮助!

编辑:

也请看这个:https://stackoverflow.com/a/30245816/6337523

【讨论】:

    猜你喜欢
    • 2013-09-30
    • 2011-11-01
    • 2018-01-09
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2020-05-25
    相关资源
    最近更新 更多