内存问题:dalvikvm-heap:xxxxx-byte分配的内存不足

时间:2013-10-06 08:39:17

标签: titanium titanium-mobile titanium-alloy

打开包含tableview的重量级窗口时出现以下内存错误。

开启/关闭的前10-15次是可以的,但之后我继续得到以下内容:

I/dalvikvm-heap(22638): Forcing collection of SoftReferences for 5030656-byte allocation
D/dalvikvm(22638): GC_BEFORE_OOM freed <1K, 10% free 116152K/128624K, paused 91ms, total 91ms
E/dalvikvm-heap(22638): Out of memory on a 5030656-byte allocation.

Full stack-trace here

每当我关闭窗口时,我都会使用以下代码:

    $.Storyboard.close();
    $.destroy();

这是我做错了还是钛有问题?

我正在使用Alloy

运行Titanium 3.1.3GA

2 个答案:

答案 0 :(得分:0)

请尝试将控制器中的代码更改为:

$.Storyboard.close();

$.Storyboard.addEventListener('close', function() {
    $.destroy();
});

destroy()可能在事件监听器之外被调用太晚。

答案 1 :(得分:0)

如果您正在使用模型视图绑定,则应该使用destroy函数(从您的代码看起来,您似乎不是这样)。

destroy删除附加到控制器的事件侦听器,它们引用了全局模型和集合(防止内存泄漏),当你关闭窗口时,你已经销毁了任何这样的引用(但主要是因为你没有使用模型-view binding)。

所以根本不要打电话给$.destroy