2013-11-21 167 views
3

我正在构建一个应用程序,它不断地创建和删除QWebView对象。一段时间后,内存消耗正在显着增长。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(); 

如果我在一个循环中运行这个函数,由programm分配的内存得到均匀增长。如果我用QPlainTextEdit或其他小工具替换QWebView - 问题就会消失。我也试过clearMemoryCachessetObjectCacheCapacities,删除页面等功能,但它仍然没有工作。

是否有正确的方式来释放QWebView中的资源?

我使用在Windows 7 x64上使用MinGW构建的Qt5.1。

回答

0

Qt WebKit已知有很多内存泄漏,尽管这些“内存泄漏”在某些情况下只是警告。你可以在这里阅读更多关于它的信息:Qt Bug 40373,还可以查看其他提及这些泄漏的错误报告。

但是,现在Qt5.6已经出来了(显然不是在你提问的时候)。现在,最好使用QWebEngineView,似乎没有更多的内存泄漏与这一个。

+0

是的,很遗憾,QWebEngineView与Qt WebKit相比非常有限。 – kdkdkdkdkd