垃圾收集的Javascript数组删除

sou*_*rar 6 javascript performance garbage-collection

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

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

TIA

Rob*_*obH 8

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

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

console.log(arr);
arr.length=0;
console.log(arr);
Run Code Online (Sandbox Code Playgroud)

结果:

[1, 2, 3, 4, 5]
[] 
Run Code Online (Sandbox Code Playgroud)

编辑:刚刚在主题上找到了这个:http://davidwalsh.name/empty-array

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

arr = [];
Run Code Online (Sandbox Code Playgroud)

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

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