我有一个使用QML元素的简单Qt应用程序,一旦启动应用程序需要大约40Mb,现在我为单页创建动态对象。
实施例
var component = Qt.createComponent("AboutUs.qml");
var object = component.createObject(mainPage);
并在我关闭页面时销毁它们 object.destroy()
应用程序的行为很奇怪:每当它创建一个简单的对象时,它需要大约1Mb,但是当我删除对象时,它们的内存不会释放。
现在我的应用程序有20个这样的页面,所以如果我单次打开每个页面,应用程序占用的总内存大约是60Mb,就像内存泄漏一样。
我无法找出它为什么会发生,是javascriptengine占用内存而不释放它,还是java脚本局部变量,不释放内存,或者是QT4,它是缓存到创建对象。
答案 0 :(得分:0)
引用Qt的网站:
可以使用destroy()方法删除项目。这种方法有一个 可选参数(默认为0),用于指定近似值 在销毁对象之前延迟毫秒。
在调用destroy()时,对象不会被销毁,但是 在该脚本块结束和下一个脚本块之间的某个时间清理 frame(除非你指定了非零延迟)。
您应该尝试使用参数调用destroy()
以使其立即删除对象。