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中的修复机会