QtWebKit内存泄漏有什么解决方案吗?

 吴国伟60942 发布于 2023-01-31 13:13

QtWebKit进程的内存大小随着每个新页面加载而增加.清理内存缓存没有帮助.有谁知道如何解决它?

这个简单的例子在运行一段时间后崩溃:

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView
from PyQt5.QtWebKit import QWebSettings

class Crawler(QWebView):
    def __init__(self):
        QWebView.__init__(self)

        self.settings().setMaximumPagesInCache(0)
        self.settings().setObjectCacheCapacities(0, 0, 0)
        self.settings().setOfflineStorageDefaultQuota(0)
        self.settings().setOfflineWebApplicationCacheQuota(0)
        self.settings().setAttribute(QWebSettings.AutoLoadImages, False)

        self.loadFinished.connect(self._result_available)

    def start(self):
        self.load(QUrl('http://stackoverflow.com/'))

    def _result_available(self, ok):
        print('got it!')

        self.settings().clearMemoryCaches() # it doesn't help
        self.settings().clearIconDatabase()

        self.start() # next try

if __name__ == '__main__':
    app = QApplication([])
    crawler = Crawler()
    crawler.start()
    app.exec_()

Mikhail Gera.. 6

禁用自动加载图像时内存泄漏的原因.这是一个将在下一个QT版本中修复的错误.删除此行解决了上述问题:

self.settings().setAttribute(QWebSettings.AutoLoadImages, False)

导致泄漏的第二个可能原因是"GStreamer中的内存泄漏".它正在进行中.

更新:

我看到人们仍在寻找解决方案.我最近发现在版本Qt 5.2.1和Qt 5.3 RC中没有修复AutoLoadImages = False的错误.关于它的新讨论已经开始.您可以在bugtracker中为此问题投票,以增加Qt 5.3.0中的修复机会

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有