用于垃圾收集的Javascript数组删除
我有一个javascript对象数组,每个对象都是用“new”创建的。在发生错误的情况下,我希望清除整个数组,以便JS引擎对其进行GC'ed。为此,只需将数组变量设置为“null”就足够了,还是需要拼接数组中的所有元素并将它们设置为null,然后再将数组变量设置为“null”用于垃圾收集的Javascript数组删除,javascript,performance,garbage-collection,Javascript,Performance,Garbage Collection,我有一个javascript对象数组,每个对象都是用“new”创建的。在发生错误的情况下,我希望清除整个数组,以便JS引擎对其进行GC'ed。为此,只需将数组变量设置为“null”就足够了,还是需要拼接数组中的所有元素并将它们设置为null,然后再将数组变量设置为“null” 我问这个问题的原因是,在Firefox中,我在将数组赋值为null之前显示了数组(console.log),而显示的对象(通常在我以后假设的显示中更新)在我以后检查数组时仍然显示数组的元素,因此,我怀疑这些元素是否真正处于
我问这个问题的原因是,在Firefox中,我在将数组赋值为null之前显示了数组(console.log),而显示的对象(通常在我以后假设的显示中更新)在我以后检查数组时仍然显示数组的元素,因此,我怀疑这些元素是否真正处于空闲状态。要清除数组,只需将长度设置为零:
var arr = [1,2,3,4,5];
console.log(arr);
arr.length=0;
console.log(arr);
结果:
[1, 2, 3, 4, 5]
[]
编辑:
刚刚在主题中找到以下内容:
查看注释,似乎将变量设置为新数组是最简单的方法:
arr = [];
根据测试结果,内存比将长度设置为0快。我想这与触发GC的分配有关
这里有一个关于各种方法的有趣的性能测试:这是否也能确保其中的对象的自由?@source.rar-我想是的,只要您没有在其他地方引用它们。谢谢。考虑到Chrome和Firefox,将arr设置为null(arr=null)似乎是获得可接受性能的最佳选择。另一个性能测试:显示[]和length=0之间没有太大差异