[webkit-help] How to clear memory held by QtWebkit?
Konstantin Tokarev
annulen at yandex.ru
Tue Dec 13 08:52:52 PST 2016
13.12.2016, 19:35, "Bono Damodi" <probablynotthebestone at gmail.com>:
> Hello,
> is there a way to deinitialise QtWebkit in runtime completely? For example for this code:
>
> #include <QApplication>
> #include <QGraphicsWebView>
> #include <QUrl>
> #include <QTimer>
>
> QGraphicsWebView* graphicsWebView;
>
> class Deleter : public QObject
> {
> Q_OBJECT
> public slots:
> void deleteWebView()
> {
> delete graphicsWebView;
> }
> };
>
> int main(int argc, char *argv[])
> {
> QApplication app(argc, argv);
> graphicsWebView = new QGraphicsWebView;
> graphicsWebView->setUrl(QUrl("http://www.google.com"));
> Deleter d;
> QTimer::singleShot(10000, &d, SLOT(deleteWebView()));
> return app.exec();
> }
>
> #include "main.moc"
>
> After deleting graphicsWebView object there is still used about 2mb of physical memory (more than 6 mb of virtual memory) by Webkit's OSAllocator (I tracked mmap's calls by OSAllocator and then correlated with /proc/pid/smaps). Much of the memory seems to be requested by JSC::JIT::compile function.
>
> Is there some way to completely clean QtWebkit after it was initialised?
To clear code compiled by JIT it should be enough to QWebSettings::clearMemoryCaches()
However, note that it's not ever possible to clear 100% of memory allocated by WebKit (any port), because a lot of data structures are by design NeverDestroyed (look for DEFINE_STATIC_LOCAL in your QtWebKit version).
>
> This is Qt 4.8
Please consider upgrading to Qt 5. Qt 4.8 have reached EOL, and all compatible QtWebKit versions are horribly out of date.
>
> Best regards
> ,
>
> _______________________________________________
> webkit-help mailing list
> webkit-help at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-help
--
Regards,
Konstantin
More information about the webkit-help
mailing list