2014-08-27 2 views
7

Работая над проектом Qt среднего размера, мы заметили, что потребление памяти на удивление очень велико, когда на экране мало что происходит. Мои попытки найти какой-то memleak привели меня к макросу CREATE_QML_OBJECT, где создаются объекты экземпляра qml. После удаления всех пользовательских элементов пользовательского интерфейса из загруженного файла QML и оставив только четыре основных из них я получилQt Быстрое использование памяти

Rectangle { 
    Button {} 
    CheckBox {} 
    Slider {} 
    TextField {} 
} 

И эта вещь потребляет около ~ 1-1,5 МБ.

Я имел взгляд на QtQuick демонстрационных проектов и его то же самое там:

Gallery demo. Просто пучок средств управления, 100 МБ при запуске.

Same game demo. Простая игра, после 5 минут игры 256 МБ.

Я действительно удивлен тем, что простое приложение QtQuick QML может потреблять огромное количество памяти. Кто-нибудь знает, что вызывает эти распределения, и есть ли способ управлять им?

Любая помощь будет принята с благодарностью.


Ссылки по теме, не нашла ответ там

QML big memory consumption?

Memory footprint of QML applications

Performance Considerations And Suggestions

+0

Странные разработчики KDE заявили, что они уменьшили потребление памяти при более высоком использовании QML. – QtRoS

+0

Вызов QML «memory hog» был бы комплиментом. Это намного хуже, чем это ... – dtech

ответ

2

Это все управляется яваскрипт сборщика мусора. Мало вещь, чтобы попробовать являются:

1) Вызов gc() только после загрузки элемента т.е. на Component.onCompleted:

2) Загрузите элементы на погрузчик. Таким образом, они не должны оставаться в памяти, когда они не используются.

Это не гарантирует уменьшение объема памяти, но может немного помочь.

+0

Спасибо за совет, но кажется, что его просто как qt быстро должен работать. По-видимому, высокая занимаемая память не была проблемой для команды разработчиков. Возможно, идея состояла в том, что вы должны реализовать некоторые небольшие части вашего интерфейса в qml. Я бы не рекомендовал использовать qtquick-only для большого проекта, чистые виджеты намного эффективнее. – vim

Смежные вопросы