Actionscript 3 当你将一部电影剪辑成一个画面,并且你的电影不断地结束并回到开始时,垃圾收集器会做什么?

Actionscript 3 当你将一部电影剪辑成一个画面,并且你的电影不断地结束并回到开始时,垃圾收集器会做什么?,actionscript-3,flash,garbage-collection,Actionscript 3,Flash,Garbage Collection,我已经知道基于时间轴编程的所有问题,但我很想知道在这种情况下垃圾收集器会发生什么 谈论时间线中的代码-如果代码不在同一帧中,则无法访问movieclip,这是否会增加内存泄漏的可能性 在我看来,timeline中的movieclips是在“playhead”当前位于其帧上时添加的,在其退出时删除的。代码仍然是该MovieClip的一部分。所以它仍然存在。既然电影唇被假定为仍然依附于它的父体,那么它就不会消失 (我说是附加到其父级,而不是在屏幕上,因为可以让父级引用子级,而子级使用.parent变

我已经知道基于时间轴编程的所有问题,但我很想知道在这种情况下垃圾收集器会发生什么

谈论时间线中的代码-如果代码不在同一帧中,则无法访问movieclip,这是否会增加内存泄漏的可能性


在我看来,timeline中的movieclips是在“playhead”当前位于其帧上时添加的,在其退出时删除的。

代码仍然是该MovieClip的一部分。所以它仍然存在。既然电影唇被假定为仍然依附于它的父体,那么它就不会消失


(我说是附加到其父级,而不是在屏幕上,因为可以让父级引用子级,而子级使用.parent变量引用父级,所以因为它们都有指向它们的东西,所以它们保留在内存中).

在以下情况下,垃圾收集器将无法清理/处置从舞台上移除的电影剪辑:

  • 该剪辑仍在播放,并执行一些操作(创建/删除其他内容…)

  • 该剪辑仍被其他“可访问”的实例引用

  • 您试图删除一个包含太多项目的过于复杂的层次结构[我没有这个数字,但我猜大约有2^32个项目?]

我通常用来查看是否存在内存泄漏的一种方法是在FlashDevelop中运行SWF Profiler,强制GC在某些情况下运行,并查看删除了什么

有关更多信息,请查看以下文章:


对不起,我不明白。我说的是放在主时间轴特定帧上的电影剪辑。如果你在另一个框架中有一个脚本,movieclip基本上是无法访问的哦,对不起,我想这是问代码是否在某个框架上,而不是movieclip的实例。我想我连猜都不敢猜。尤其是当你开始处理eventListeners之类的事情时。也许如果它们被设置为弱参考,它们最终会消失。因为当您再次返回到第1帧时,您创建了一个新的movieclip实例。但我个人从未制作过多框架电影。我总是在一个框架内完成所有工作。我也是,但有时我看到项目是这样完成的。我收集了所有以这种编程方式出现的问题,作为使用文档类的好理由。