我使用Qt / QML创建了一个应用程序,使用QQuickView
加载qml文件,并使用Loader
元素更改应用程序内的页面(gui),并且工作正常,但是我的问题是程序内存使用量增加(应用程序以100MB以下开始,1天后,大小约为500 MB或更多),我最初在Qml(javascript)中编写和更新对象模型,但是应用程序快速增长,更改为使用C ++对象创建模型,内存使用量增长较少,但问题仍未解决。
我的模型可以连续更新(甚至每秒1次),但我不相信这是记忆力上升的原因。
但是有了这个问题,其他陌生人的行为是使用TableView,当更改到该页面时,内存甚至上升到10 MB,我尝试用gc()
释放内存,但是我没有获得成功的结果,在页面更改中,内存有时会增加1 MB。
注意:我使用的是Qt 5.5和msvc 2010。
答案 0 :(得分:1)
您可能希望检查应用程序是否存在内存泄漏。这听起来有点过分,即使对于QML来说也是如此,因为QML并不以内存效率着称。
请记住,QML引擎会过度配置,即使看起来合乎逻辑,也不会释放内存。我已经有过在QML中达到千兆字节内存使用情况的案例,拥有成千上万的QML对象" alive"并且在删除所有对象后,内存使用并没有到达任何地方最初的内存使用情况。释放的内存通常很少,例如,具有1 GB内存的对象,删除所有对象只能释放150 MB的内存。好消息是内存将被重用,再次创建这些对象会将内存使用量推到前一个峰值,而不是更进一步。因此,就您的应用程序中的内存而言,您已经设置好了。
我不知道是否会与其他操作系统进程叠加,无论你的应用程序是否会释放额外的内存,如果你的系统用完ram。