考虑:
QString urls[] = {
QString("http://www.sina.com")
};
int len = 1;
QWebSettings::setMaximumPagesInCache(0);
QEventLoop loop;
for (int i = 0; i < 200000; i++) {
QWebPage *page = new QWebPage;
page->settings()->setAttribute(
QWebSettings::AutoLoadImages,
false);
page->settings()->setAttribute(
QWebSettings::PrintElementBackgrounds,
false);
page->settings()->setAttribute(
QWebSettings::JavascriptEnabled,
false);
QString url = urls[i % len];
cout << "requesting " << url.toStdString() << endl;
connect(page, SIGNAL(loadFinished(bool)),
&loop, SLOT(quit()));
page->mainFrame()->load(url);
loop.exec();
disconnect(page, 0, 0, 0);
QWebSettings::clearMemoryCaches();
page->settings()->clearMemoryCaches();
connect(page, SIGNAL(destroyed()),
&loop, SLOT(quit()));
printLog(page->mainFrame()->toHtml());
page->deleteLater();
loop.exec();
}
执行此测试时,内存从大约 40 MB 增加到大约 700 MB。我的代码中似乎存在内存泄漏。但似乎所有对象都被删除了。为什么是这样?