Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于垃圾收集的Javascript数组删除_Javascript_Performance_Garbage Collection - Fatal编程技术网

用于垃圾收集的Javascript数组删除

用于垃圾收集的Javascript数组删除,javascript,performance,garbage-collection,Javascript,Performance,Garbage Collection,我有一个javascript对象数组,每个对象都是用“new”创建的。在发生错误的情况下,我希望清除整个数组,以便JS引擎对其进行GC'ed。为此,只需将数组变量设置为“null”就足够了,还是需要拼接数组中的所有元素并将它们设置为null,然后再将数组变量设置为“null” 我问这个问题的原因是,在Firefox中,我在将数组赋值为null之前显示了数组(console.log),而显示的对象(通常在我以后假设的显示中更新)在我以后检查数组时仍然显示数组的元素,因此,我怀疑这些元素是否真正处于

我有一个javascript对象数组,每个对象都是用“new”创建的。在发生错误的情况下,我希望清除整个数组,以便JS引擎对其进行GC'ed。为此,只需将数组变量设置为“null”就足够了,还是需要拼接数组中的所有元素并将它们设置为null,然后再将数组变量设置为“null”


我问这个问题的原因是,在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之间没有太大差异