gpt4 book ai didi

c++ - 为什么一个qwebpage的测试内存一直在增加?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:55 25 4
gpt4 key购买 nike

考虑:

    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。看起来我的代码中存在内存泄漏。但似乎所有对象都被删除了。这是为什么?

最佳答案

这在 2009 年就已经是一个已知问题。不幸的是,提出该问题的人并没有进一步实际提交错误报告。您可以在此处阅读相应的主题:

http://marc.info/?l=webkit-dev&m=124888472218111&w=2

如果 Qt 5.2 仍然存在错误报告,我建议继续创建错误报告。

请注意,在理想情况下,如所写,您不应该为该操作设置堆对象,尽管它有点偏离主题,因为它不能解决您的问题。然而,最好注意此处的堆栈对象可以完成您的工作,而无需手动删除麻烦。

关于c++ - 为什么一个qwebpage的测试内存一直在增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20878732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com