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



假设你有一个数组:

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

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

array = [];

现在没有对它的引用,是否从内存中删除了该原始数组?

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

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

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

相关内容

最新更新