QWebEngineView RAM 问题(所有内存一分钟被它占用)

Posted

技术标签:

【中文标题】QWebEngineView RAM 问题(所有内存一分钟被它占用)【英文标题】:QWebEngineView RAM problems (all memory is taken by it in a minute) 【发布时间】:2015-08-14 11:05:38 【问题描述】:

您好,到目前为止,我对QWebViewEngine 有一个大问题。因为我所做的只是创建了一个QWebEngineView,然后说.load(QUrl("http://google.com")),然后是.showFullScreen()。启动时应用程序占用了大约 130MB 的 RAM。当我在谷歌上按下感到幸运并且页面突然加载时,RAM开始以每秒200mb的速度攀升,当没有更多可用RAM时它停止了。

任何人都遇到过这个问题,或者遇到过QWebEngineView。 我知道它的 Chromium,但在我看来它好像不能正常工作。

有什么建议可以解决这个问题吗?

编辑于 2015 年 8 月 14 日 14:12 这是代码(注意大部分都被注释了):

#include "mainwindow.h"
#include <QtWebEngineWidgets/QtWebEngineWidgets>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QScopedPointer>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)

    view = new QWebEngineView();
    manager = new QNetworkAccessManager();
    settings = new QSettings(":/settings.ini",QSettings::IniFormat);
//    connect(view,SIGNAL(loadFinished(bool)),this,SLOT(CheckPage()));
//    connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(connection(QNetworkReply*)));
//    errorOpen=false;
    settings->beginGroup("URL");
    myUrl = settings->value("curUrl").toString();
    settings->endGroup();
//    view->load(myUrl);
    view->load(QUrl("http://google.com"));
    view->showFullScreen();
    settings->deleteLater();


MainWindow::~MainWindow()

//    delete view;
//    delete manager;

【问题讨论】:

我正在使用带有 MVC++ 编译器 12.0 和 Windows SDK 8.1 调试器的 QT 5.5 MSVC2013 64 位。平台是 windows,我认为它是预构建的,因为我像设置一样从 QT 网页上下载了它。 【参考方案1】:

我无法在 OS X 10.9 上的 macports 在 qt5-mac @5.4.2_1 下重现:

//main.cpp
#include <QtWebEngineWidgets>
#include <QApplication>

int main(int argc, char ** argv)

   QApplication a(argc, argv);
   QWebEngineView view;
   view.load(QUrl("http://google.com"));
   view.showFullScreen();
   return a.exec();

# chromium-32008560.pro
QT       += webenginewidgets
TARGET = chromium-32008560
TEMPLATE = app
SOURCES += main.cpp

【讨论】:

@AlexanderBaťka 那么,我在此处发布的代码是否为您重现了该问题?复制粘贴此问题中的两个文件,或者使用github.com/KubaO/***n.git 中的 git 检查它们(答案的编号在文件夹名称中),编译并运行。那你看出问题了吗? 不幸的是,我也尝试过这种方法,但没有任何改变:-/它仍然像鸟一样飞翔。 @AlexanderBaťka 因此,您可以复制粘贴此答案中的代码,并将其作为测试用例附加到 Qt 错误报告中。它一定是一个 Qt 错误——要非常小心地提供你使用的所有东西的确切版本(Qt、MSVC、Windows,无论是自建 Qt 还是二进制下载,如果是这样的话,等等),这样它就有机会被复制。

以上是关于QWebEngineView RAM 问题(所有内存一分钟被它占用)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 QWebEngineProfile 设置为 QWebEngineView

QWebEngineView 如何禁用捏合缩放

QWebEngineView 中的内存泄漏

QWebEngineView 无法运行

如何使用 QWebEngineView 忽略 SSL 证书错误

QWebEngineView:Mac OSX 上的异常行为