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

时间:2012-10-04 02:21:37

标签: javascript performance memory

所以假设你有一个数组:

var array = [1, 2, 3, 4, 5, 6]

然后你将对该数组的引用重新分配给一个新的空数组:

array = [];

是否原始数组已从内存中删除,因为没有更多引用它?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

答案为否(如果var名称不同[看到您更改了问题]),并且在您的问题中添加的新示例中为是。在var名称不同的情况下,如果需要将原始数组设为null,则可以释放一些内存,但是它们都会占用空间。在数组2中,您实际上是在创建一个包含第一个数组内容的新数组。对象(js中的assoc数组)是一个不同的故事,但是遵循上面提到的参考规则。

如果在同一范围内使用相同的var名称,则为yes。第二个调用将释放第一个场景中的内存