LINUX.ORG.RU

Объем выделенной памяти на старте QML приложения (под Windows)

 ,


0

4

Привет, проблема такая: на разных машинах одно и то же приложение на старте выделяет себе разное количество памяти, грубо говоря от 80 до 500 Mb. На одной машине всегда одно и то же. Явной корреляции между объемом ОЗУ и выделяемой памятью нет, может на 8 Gb занимать 160 Mb, может на 4 Gb занимать 500 Mb. Но если взять виртуалку, и дать ей всего 512 Mb, то приложение ест 80 Mb. На macOS ест 58 Mb.

Внимание вопрос: как можно ограничить аппетиты JS движка по выделению памяти про запас?

★★★★★

Ответ на: комментарий от RazrFalcon

Ок, уже трое.

На тег подписано 20 человек.

CrossFire ★★★★★
() автор топика
Ответ на: комментарий от fluorite

По-делу если, есть же qml-профайлер в креаторе.

Он показывает что объем используемой памяти маленький, а выделенной — за секунду растет скачками 65Mb — 130Mb — 260Mb при запуске, так что профайлер особо не помогает.

CrossFire ★★★★★
() автор топика
Последнее исправление: CrossFire (всего исправлений: 1)
Ответ на: комментарий от CrossFire

мне кажется он динамически у системы спрашивает и если она отдаёт то берёт что дают.. полагаю как-то так..

не думаю что реально есть повод для беспокойства..

Thero ★★★★★
()
Последнее исправление: Thero (всего исправлений: 1)
Ответ на: комментарий от Pavval

Пишем приложения на QML и помногу, чё скрывать. По поводу топика сразу напрашивается вопрос одинаковые ли версии Qt, потому как они в каждом релизе заявляют про очередную оптимизацию QML/JS.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

По поводу топика сразу напрашивается вопрос одинаковые ли версии Qt, потому как они в каждом релизе заявляют про очередную оптимизацию QML/JS.

Одинаковые, прям один и тот же билд на разных машинах показывает разное потребление памяти.

CrossFire ★★★★★
() автор топика
Ответ на: комментарий от dib2

32/64 разряда влияют на показатели?

Корреляции не выявлено. Есть 500 метров на системе 32 бита и 4 Гб ОЗУ, есть 120 на виртуалке 32 бита с 3 Гб ОЗУ. На 64 битных системах тоже по-разному.

CrossFire ★★★★★
() автор топика
Последнее исправление: CrossFire (всего исправлений: 1)

Есть предположение что Qt каким-то образом дергает Shell, и егойные расширения грузятся в процесс. Предполагаю что на разных машинах разного шелл-интгерируемого хлама установлено.

FeyFre ★★★★
()

Ещё Qt автоматом использует OGl или DX (ANGLE). Может от видеокарты и её драйверов ещё зависит?

tnodir
()
Ответ на: комментарий от tnodir

Ещё Qt автоматом использует OGl или DX (ANGLE). Может от видеокарты и её драйверов ещё зависит?

А вот это хорошее замечание, зависит:

QApplication::setAttribute(Qt::AA_UseOpenGLES, true); //58 Mb
QApplication::setAttribute(Qt::AA_UseDesktopOpenGL, true); //205 Mb
QApplication::setAttribute(Qt::AA_UseSoftwareOpenGL, true); //107 Mb
// Default 205 

Но к сожалению AA_UseOpenGLES использовать в этом проекте мы не можем, он решает много проблем, в том числе со скоростью анимации, но дает артефакты на ресайзе прозрачных окон (они безрамочные с кастомной тенью).

CrossFire ★★★★★
() автор топика

Для подписанных на эту тему: потребление памяти зависит от количества окон в приложении.

Создал багрепорт: https://bugreports.qt.io/browse/QTBUG-59258

CrossFire ★★★★★
() автор топика
Ответ на: комментарий от Pavval

Как и вот в этом случае, ответ состоит из одной строчки:

qputenv("QSG_RENDER_LOOP", "basic");
CrossFire ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.