2016-02-08 54 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

相關問題