垃圾收集的Javascript数组删除

时间:2013-07-23 09:12:22

标签: javascript performance garbage-collection

我有一个javascript对象数组,每个对象都是用'new'创建的。如果出现错误,我想清除整个数组,以便它由JS引擎进行GC管理。为此,只需将数组变量设置为'null',或者我需要拼接数组中的所有元素并在将数组变量设置为'null'之前将它们设置为null吗?

我问的原因是在Firefox中我在显示(console.log)数组之前将其分配给null并且显示的对象(通常在显示中更新,我假设甚至更晚)仍然显示数组的元素当我稍后检查它时,我怀疑这些元素是否实际上是免费的。

TIA

1 个答案:

答案 0 :(得分:7)

要清除数组,您只需将长度设置为零:

var arr = [1,2,3,4,5];

console.log(arr);
arr.length=0;
console.log(arr);

结果:

[1, 2, 3, 4, 5]
[] 

编辑: 刚刚在主题http://davidwalsh.name/empty-array

上找到了这个

查看注释似乎只是将变量设置为新数组是最简单的方法:

arr = [];

根据测试结果,内存的GC比将长度设置为0更快。我想这会与触发GC的分配有关。

这里有各种方法的有趣性能测试:http://jsperf.com/array-destroy