1

我有一个使用 QML 元素的简单 Qt 应用程序,一旦我启动应用程序,它需要大约 40Mb,现在我为单页创建动态对象。

例子。

var component = Qt.createComponent("AboutUs.qml");
 var object = component.createObject(mainPage);

并在我使用 object.destroy() 关闭页面时销毁它们

应用程序的行为很奇怪:每当它创建一个简单的对象时,它需要大约 1Mb,但是当我删除该对象时,它们的内存不会被释放。

现在我的应用程序有 20 个这样的页面,所以如果我单次打开每个页面,应用程序占用的总内存大约是 60Mb,这就像内存泄漏。

我无法找出它发生的原因,是javascript引擎占用了内存而不释放它,还是java脚本局部变量没有释放内存,或者是QT4,它正在缓存以创建对象。

4

1 回答 1

0

引用 Qt 的网站:

可以使用 destroy() 方法删除项目。此方法有一个可选参数(默认为 0),它指定对象被销毁之前的近似延迟(以毫秒为单位)。

对象在调用 destroy() 时不会被销毁,但会在该脚本块结束和下一帧之间的某个时间被清理(除非您指定了非零延迟)。

您应该尝试destroy()使用参数调用以使其立即删除对象。

于 2013-10-28T19:57:22.720 回答