Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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_Memory - Fatal编程技术网

将对javascript数组的引用重新分配给另一个空数组是否会释放原始数组使用的内存?

将对javascript数组的引用重新分配给另一个空数组是否会释放原始数组使用的内存?,javascript,performance,memory,Javascript,Performance,Memory,假设你有一个数组: var array = [1, 2, 3, 4, 5, 6] 然后将对该数组的引用重新分配给一个新的空数组: array = []; 由于不再有对原始数组的引用,该数组是否已从内存中删除?可能不会立即(作为重新分配的一部分),但只要对它的引用计数下降到0(没有其他变量指向该数组),就可以对其进行垃圾收集。答案是否(如果变量名称不同[看到您更改了问题]),是的,正如在您的问题中添加的新示例中一样。如果变量名称不同,您可以在需要时通过将原始数组设为null来释放一些内存,但是

假设你有一个数组:

var array = [1, 2, 3, 4, 5, 6]
然后将对该数组的引用重新分配给一个新的空数组:

array = [];
由于不再有对原始数组的引用,该数组是否已从内存中删除?

可能不会立即(作为重新分配的一部分),但只要对它的引用计数下降到
0
(没有其他变量指向该数组),就可以对其进行垃圾收集。

答案是否(如果变量名称不同[看到您更改了问题]),是的,正如在您的问题中添加的新示例中一样。如果变量名称不同,您可以在需要时通过将原始数组设为null来释放一些内存,但是它们都会占用空间。在数组2中,您实际上是使用第一个数组的内容创建一个新数组。对象(js中的assoc数组)但遵循上述参考规则,情况就不同了


如果在同一作用域中使用相同的var名称,则为“是”。第二次调用将从第一个场景中释放内存

No。但是,如果没有对该数组的引用,它将成为“合格”的垃圾回收