Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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_Garbage Collection - Fatal编程技术网

嵌套函数,如何在flash actionscript 3中进行垃圾收集?

嵌套函数,如何在flash actionscript 3中进行垃圾收集?,flash,actionscript-3,garbage-collection,Flash,Actionscript 3,Garbage Collection,我在as3中有一个非常复杂的函数。该函数由嵌套在其中的许多其他函数组成。主函数有变量,它的所有嵌套函数也有自己的变量。某些嵌套函数由添加到主函数或其他嵌套函数中的事件调用 现在我想知道,我的主要功能何时被垃圾收集?代码何时会退出主功能?什么时候对变量、事件和嵌套函数进行垃圾收集 附言:补充一些细节。假设我的主函数名为loadImages(),它包含一组嵌套函数:connectToServer()、sortImages()和onImagesLoaded()。 首次调用loadImages()时,它

我在as3中有一个非常复杂的函数。该函数由嵌套在其中的许多其他函数组成。主函数有变量,它的所有嵌套函数也有自己的变量。某些嵌套函数由添加到主函数或其他嵌套函数中的事件调用

现在我想知道,我的主要功能何时被垃圾收集?代码何时会退出主功能?什么时候对变量、事件和嵌套函数进行垃圾收集

附言:补充一些细节。假设我的主函数名为loadImages(),它包含一组嵌套函数:connectToServer()、sortImages()和onImagesLoaded()。 首次调用loadImages()时,它将创建一个url变量和一个images数组变量。然后它将调用其内部函数connectToServer()。此函数将连接到服务器,开始下载图像,并添加一个onComplete事件侦听器,该侦听器将在加载所有图像后调用onImagesLoaded()。加载所有图像后,由于该事件,将调用onImagesLoaded()。此函数将删除onComplete事件侦听器,并将调用sortImages()并将加载的图像作为参数传递给它。之后,sortImages()将按字母顺序对图像进行排序,并将它们放入主函数loadImages()的images数组中。最后,loadImages()将把数组中的图像添加到stage


谢谢。

嵌套函数将从外部函数捕获变量,可能会意外或不必要地保留这些变量的生命周期。除非特别需要嵌套函数提供的额外功能(捕获外部变量),否则应避免使用嵌套函数

使用嵌套函数也会带来性能损失,但它实际上只会出现在无用的微基准测试中,而这些测试永远不会影响真实世界的应用程序


如果需要使用嵌套函数,请确保在使用完它们后将其作为事件侦听器删除。这样做将使它们可用于垃圾收集。您可以确保始终将它们注册为弱事件侦听器,这样事件就不会计入它们(或它们捕获的变量)是否可用于GC。但是,由于它们是嵌套函数,因此很可能唯一能保持它们的是事件注册。

嵌套函数将从外部函数捕获变量,并可能会意外或不必要地保留这些变量的生命周期。除非特别需要嵌套函数提供的额外功能(捕获外部变量),否则应避免使用嵌套函数

使用嵌套函数也会带来性能损失,但它实际上只会出现在无用的微基准测试中,而这些测试永远不会影响真实世界的应用程序


如果需要使用嵌套函数,请确保在使用完它们后将其作为事件侦听器删除。这样做将使它们可用于垃圾收集。您可以确保始终将它们注册为弱事件侦听器,这样事件就不会计入它们(或它们捕获的变量)是否可用于GC。但是,由于它们是嵌套函数,因此很可能唯一能保持它们的是事件注册。

有没有办法释放这些外部变量,以便明确确保它们不会被保留?是的,在似乎不必要时不使用嵌套函数:(很好的尝试,除了在我的情况下它是必要的。即使不是,出于学习目的,我仍然想知道,避免它并不能真正回答问题。有没有办法释放这些外部变量,从而明确确保它们不会被保留?是的,在似乎不必要时不使用嵌套函数:(很好的尝试,除了对我来说这是必要的。即使不是,出于学习目的,我还是想知道,避免它并不能真正回答问题。