#qt5 #qml
Не пойму, почему так много расходится память для отображения qml файла. Вот скриншот: Вот код: C++ #include#include int main(int argc, char *argv[]) { QApplication a(argc, argv); QQuickWidget widget; widget.setSource(QUrl::fromLocalFile("text.qml")); widget.setWindowFlag(Qt::FramelessWindowHint); widget.show(); return a.exec(); } text.qml: import QtQuick 2.12 Item { width: 150 height: 200 Rectangle { width: parent.width height: parent.height color: "#66ff99" } } Почему для отображения простого прямоугольника, нужно столько памяти?
Ответы
Ответ 1
Так же можно утсановить вот этот флаг, который снижает потребеление памяти в 5 раз. QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software); Беспонятие, что этот флаг значит, но работает он бесподобно.Ответ 2
QML - наследник программного инструмента QtScript, который в свою очередь реализует полноценный JavaScript интерпритатор со своим Garbage Collector, глобальными объектами (например, XMLHttpRequest, который доступен как в js, так и qml), а так же механизмами прототипного наследования. То, что суммарно программа потребляет так много памяти это норма в 2019 году... Теоретически, можно обнулить какие-то части глобального объекта QML. В принципе, если вам не нужны HTTP запросы прямо с QML разметки. На практике - 100+ мегабайт это совершенно нормальное потребление памяти для приложения, которое взаимодействует с API целевой операционной системы через абстракцию. #include#include int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQuickView view; view.setSource(QUrl::fromLocalFile("application.qml")); view.show(); return app.exec(); } P.S. Если приложение использует только функциональность QML, возможно, применение класса QGuiApplication вместо QApplication поможет сэкономить память.
Комментариев нет:
Отправить комментарий