当我们做 someArray = [] 时,Array 中的内容会被垃圾收集吗?

Will the contents inside the Array garbage collected when we do someArray = []

someArray 中有一些项目。 所以 someArray.splice(0) 和 someArray = [] 做同样的事情就是让 someArray 为空。

someArray.splice(0) 比 someArray = [].

花费的时间要多得多

通过someArray = [],someArray里面的内容会被垃圾回收吗?

如果没有其他变量持有指向某些数组元素的指针,它就会这样做。 例如,

var a:Array = [new Object(), new Object(), new Object()];
var b:Object = a[1];
a = [];

a[0]a[2] 将被垃圾回收,a[1] 不会,因为变量 b 持有对它的引用。

array = []; 

创建新的空的而不是清除,因此垃圾收集器让它保持活动状态,需要使用:

array.length = 0; // or array.splice(0);

因为您可能有对数组的引用,它们也需要更新

先检查:

var someArray:Array=[1,2,3];
var copyOfSomeArray:Array=someArray;
someArray=[];
trace (copyOfSomeArray); //gives 1,2,3

现在这个:

var someArray:Array=[1,2,3];
var copyOfSomeArray:Array=someArray;
someArray.length = 0;
trace (copyOfSomeArray); //gives nothing

最后不要忘记为垃圾收集器显式设置 null 数组。

someArray=null;