在处理一个中等大小的Qt项目时,我们注意到,当屏幕上没有太多内容时,内存消耗会高得惊人。我试图找到某种memleak,这让我找到了CREATE_QML_OBJECT宏,其中创建了QML实例对象。在从加载的qml文件中删除所有自定义ui元素并只留下四个基本元素后,我得到了
Rectangle {
Button {}
CheckBox {}
Slider {}
TextField {}
}
这个东西大约消耗1-1.5 MB。
我看过QtQuick的演示项目,它在那里是一样的:
Gallery演示。只是一堆控件,启动时为100MB。
同样的游戏演示。简单的游戏,玩了5分钟256MB就没了。
一个简单的QtQuick QML应用程序可以占用大量内存,这让我非常惊讶。有人知道是什么原因导致了这种分配吗?有没有办法管理它?
任何帮助都将不胜感激。
相关链接,还没有找到答案那里
QML内存消耗大?
QML应用程序的内存占用
性能注意事项和建议
全部由javascript垃圾收集器管理。很少有东西可以尝试:
1) 加载项目后立即调用gc()
,即在Component.onCompleted:
上
2) 在Loader上加载项目。这样,它们就不应该在不使用的时候留在记忆中。
这些并不能保证减少内存占用,但会有所帮助。