Flash ActionScript 3 - 此功能是否存在内存泄漏?

时间:2011-11-01 22:09:53

标签: flash actionscript-3 memory-management

我正在处理内存分配(以及一般的ActionScript 3),我在教程中遇到了这样的函数:

addEventListener(Event.ENTER_FRAME, enterFrame);

function enterFrame(e:Event):void
{

if(redClipBmpData.hitTest(new Point(redClip.x, redClip.y),255,blueClipBmpData,new Point(blueClip.x, blueClip.y),255))

trace("hit");

}

我担心的部分是hitTest函数中的'new Point ...'位。因此,每次调用该函数时,都会分配新内存来存储Point对象。

因为没有对Point的引用(比如var a:Point = new Point(...))这是否意味着垃圾收集器会在调用函数后为“new Point”释放内存?

写下类似的东西会不会更好:

var a:Point = new Point(); 

在enterFrame函数之外,然后在enterFrame函数内写:

a.x = redClip.x

a.y = redClip.y

这样你就可以重用变量引用的内存了吗?

如果我对记忆的初步理解是错误的,请纠正我。

1 个答案:

答案 0 :(得分:4)

GC在执行函数后不会立即回收内存,但只要发生扫描,Point对象就有资格进行垃圾回收。 Flash GC在需要时回收内存。

您可以在函数外部声明Point对象,以便只创建一个,但是当您完成它时,您必须记住销毁对它的任何引用。我认为任何效率提升都是微不足道的。