2013-11-21 2 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(); 

Если я запустил эту функцию в цикле, память, выделенная программой, будет равномерно расти. Если я заменю QWebView на QPlainTextEdit или другой виджет - проблема исчезнет. Я также пробовал функции, такие как clearMemoryCaches, setObjectCacheCapacities, удаление страниц, и это все еще не сработало.

Есть ли правильный способ освободить ресурсы в QWebView?

Я использую Qt5.1, построенную с MinGW, в Windows 7 x64.

ответ

0

У Qt WebKit, как известно, много утечек памяти, хотя эти «утечки памяти» являются лишь предупреждениями в некоторых случаях. Вы можете прочитать об этом здесь: Qt Bug 40373, а также просмотреть другие сообщения об ошибках, в которых упоминаются те утечки.

Однако Qt5.6 сейчас нет (и, очевидно, не был на момент вашего вопроса). Теперь лучше использовать QWebEngineView, кажется, что утечек памяти больше нет.

+0

Да, очень грустно, что QWebEngineView очень ограничен по сравнению с Qt WebKit. – kdkdkdkdkd

Смежные вопросы