Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash ActionScript 3-此功能中是否存在内存泄漏?_Flash_Actionscript 3_Memory Management - Fatal编程技术网

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

Flash ActionScript 3-此功能中是否存在内存泄漏?,flash,actionscript-3,memory-management,Flash,Actionscript 3,Memory Management,我开始了解内存分配和ActionScript3,我在一个教程中遇到了这样一个函数: 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)) tr

我开始了解内存分配和ActionScript3,我在一个教程中遇到了这样一个函数:

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函数中的“新点…”位。因此,每次调用函数时,都会分配新内存来存储点对象

因为没有像var a:Point=new Point这样的点引用。。。这是否意味着在调用函数后,垃圾收集器将释放“新点”的内存

写下这样的内容会更好吗

var a:Point = new Point(); 
在enterFrame函数外部,然后在enterFrame函数内部写入:

a.x = redClip.x

a.y = redClip.y
那么您正在使用变量所指的内存


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

在函数执行后,GC不会立即回收内存,但每当执行扫描时,点对象都有资格进行垃圾收集。闪存GC在需要时回收内存


您可以在函数外部声明Point对象,以便只创建一个对象,但在使用完该对象后,您必须记住销毁对它的任何引用。我认为任何效率的提高都是微乎其微的。

在函数执行后,GC不会立即回收内存,但每当执行扫描时,点对象都有资格进行垃圾收集。闪存GC在需要时回收内存


您可以在函数外部声明Point对象,以便只创建一个对象,但在使用完该对象后,您必须记住销毁对它的任何引用。我认为任何效率的提高都是微乎其微的。

无论如何,为了清洁起见,我还是要谈后一点。“在我看来,每一帧都创建一个新对象似乎很草率。”MartyWallace,只是为另一方辩护。创建外部可重用点会带来维护难点;以及当事情变得更复杂时出现bug的可能性。当我们最小化共享状态时,我们获得了更大的灵活性;这只是重构代码时需要担心的另一件事——还有什么好处,可以忽略不计的到不存在的性能增益?不是说没有时间和地点来做这件事;这与其说是为了提高性能。。一次又一次地创建一个新对象的概念在我的脑海里似乎真的很混乱。此外,在课程结束时创建解构函数或其他东西并掩盖所有这些事情并不难。谢谢你对此的澄清。很高兴知道这些点会被清理干净。出于好奇,有人知道大致大的是一个点对象吗?它的类中有3个数字和几个函数,每秒的速率是多少?垃圾收集器来了?无论如何,为了清洁起见,我会接受后一点。“在我看来,每一帧都创建一个新对象似乎很草率。”MartyWallace,只是为另一方辩护。创建外部可重用点会带来维护难点;以及当事情变得更复杂时出现bug的可能性。当我们最小化共享状态时,我们获得了更大的灵活性;这只是重构代码时需要担心的另一件事——还有什么好处,可以忽略不计的到不存在的性能增益?不是说没有时间和地点来做这件事;这与其说是为了提高性能。。一次又一次地创建一个新对象的概念在我的脑海里似乎真的很混乱。此外,在课程结束时创建解构函数或其他东西并掩盖所有这些事情并不难。谢谢你对此的澄清。很高兴知道这些点会被清理干净。出于好奇,有人知道大致大的是一个点对象吗?它的类中有3个数字和几个函数,每秒的速率是多少?垃圾收集器来了?