2016-02-08 53 views
0

我创建了一个应用程序与Qt/QML,加载一个qml文件QQuickView,并与此使用Loader元素更改应用程序中的页面(gui),并正常工作,但我的问题是程序内存使用量的增加(应用程序以100MB开始,1天后大小约为500 MB或更多),我最初编写和更新Qml(javascript)中的对象模型,但应用程序增长很快,为了用C++对象创建模型,内存使用量增长较少,但问题仍未解决。Qt qml应用程序增加内存使用量

我的模型可以不断更新(甚至每秒1次),但我不认为这是内存上升的原因。

但这一问题来了其他陌生人的行为是TableView中的变化时,该页面,内存甚至上升10 MB,我尝试免费内存gc(),但我没有得到成功的结果,并在变化页面,内存有时可以增加1 MB。

注:我使用一个Qt 5.5和MSVC 2010

回答

1

你可能要检查你的内存泄漏的应用程序。这听起来有点过头了,即使对于不以存储效率着称的QML也是如此。

请记住,即使这似乎是合乎逻辑的事情,QML引擎也会过度配置并且不会释放内存。我已经在QML中遇到了几千兆字节的内存使用情况,其中有数以万计的QML对象“活着”,并且在删除所有对象后,内存使用情况不会在初始内存使用情况附近出现。释放的内存通常很小,例如,拥有1 GB内存的对象,删除所有对象只能释放150 MB的内存。好消息是内存将被重用,再次创建这些对象会将内存使用量推向前一个高峰,而不是进一步。因此,就应用程序的内存而言,您已设置好了。

我不知道这是否会与其余的OS进程堆栈在一起,无论您的应用程序是否会在系统用完ram时释放额外的内存。

+0

谢谢,现在我在使用后在“null”(显式)qml中放了很多对象“var”,并使用valgrind检查内存泄漏(但通常在加载程序元素中的源变化,valgrind崩溃)。 但我说,你的评论对我来说并不乐观。 – APRocha

+0

我希望应用程序有一次得到200〜300的大小不会增加更多 – APRocha

相关问题