我正在构建一个不断创建和删除QWebView对象的应用程序。一段时间后,内存消耗显著增加。
我构建了一个最小的示例,它演示了这个问题。
QList<QWebView *>views;
for(int i = 0;i<500;i++)
{
QWebView *view = new QWebView();
view->setHtml("Test");
views.append(view);
}
foreach(QWebView *view,views)
{
delete view;
}
views.clear();如果我在循环中运行此函数,则由程序分配的内存将均匀增长。如果我将QWebView替换为QPlainTextEdit或其他小部件,问题就会消失。我也尝试过像clearMemoryCaches、setObjectCacheCapacities、删除页面这样的函数,但是它仍然不起作用。
有正确的方法在QWebView?中释放资源吗?
我使用Qt5.1在Windows 7 MinGW上构建的x64。
发布于 2016-04-11 10:01:17
众所周知,Qt WebKit存在许多内存泄漏,尽管在某些情况下,这些“内存泄漏”只是警告。您可以在这里阅读更多关于它的信息:Qt Bug 40373,还可以看到其他的bug报告提到了这些漏洞。
然而,Qt5.6现在已经出来了(很明显,在你提出问题的时候没有)。现在,更好的做法是使用QWebEngineView,似乎没有更多的内存泄漏。
https://stackoverflow.com/questions/20120811
复制相似问题