1

我正在 AS3 应用程序中实现垃圾收集。一方面,在一个循环中创建了几个显示对象,如下所示:

for(var i:uint = 0; i <= this._exampleVector.length - 1; i++) 
{
   this._customText = new CustomTextObject(this._exampleVector[i].playlistText),  this._customTextWidth);
   this.addChild(this._customText);

  etc etc

  this._customTextVector.push(this._customText); // used for ref in garbage collection
}

然后我通过循环 _customTextVector 变量来执行我的垃圾收集准备。

for(var i:uint = 0; i <= this._customTextVector.length - 1; i++) 
{
  this.removeChild(this._customTextVector[i]);
  this._customTextVector[i].gcAllObjects();
  **this._customTextVector[i] = null;**
}

当我尝试使 _customTextVector 中的 _customText 为空时,这不起作用。它只会使 Vector 内的索引为空。关于如何执行此操作或其他方法进行垃圾收集的任何想法?

谢谢

克里斯

4

2 回答 2

0

为了使 AS3 垃圾收集器对您的对象进行 GC,您需要删除对它们的所有引用(包括事件侦听器)。在下一次 GC 传递时,对象的内存将被释放。没有办法像你想要的那样直接、立即“清空”一个对象。

如果您遇到内存问题,请查看此帖子

于 2012-04-10T13:29:48.807 回答
0

循环遍历所有索引后是否可以执行以下操作

  _customTextVector =null;
于 2012-04-10T13:18:49.610 回答