如何从EmberJS中的内存中正确卸载对象?

时间:2013-07-03 15:35:54

标签: javascript ember.js

我有一个控制器,其中包含一个包含对象的数组。 每当我想重新加载这个数组时,我都会使用controller.set('messages', []);

在我的浏览器中,此工作正常,不会导致浏览器崩溃。 然而,在iPad上应用程序崩溃几分钟后崩溃。在我的调试日志中,我看到了内存警告。我的猜测是对象保留在内存中,这会导致应用程序崩溃。 (我在某处读到iPad上的Safari对javascript对象等的内存限制约为10MB。)

这是从数组中清除数据的正确方法,并删除对该对象的所有引用,以便系统可以对其进行垃圾回收吗?

2 个答案:

答案 0 :(得分:2)

我猜你正在遇到一些没有被删除的绑定,从而导致你的记忆问题。您可以尝试其中一种Array内置方法,例如clear,这可能是正确的工作。

例如:

controller.get('messages').clear();

这样可以重复使用数组。

如果有帮助,请告诉我。

答案 1 :(得分:1)

您可以在Ember对象上调用destroy方法。

例如:

var messages = controller.get('messages');
messages.forEach(function(message) {
  message.destroy();
});
messages.clear();