当你将一个动画片段放到一个帧中时,垃圾收集器会是什么,你的电影会不断结束并重新开始?

时间:2012-08-02 14:54:29

标签: actionscript-3 flash garbage-collection

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

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

对我来说,当“播放头”当前在它的框架上时会添加时间轴中的动画片段,并在播出时将其删除。

2 个答案:

答案 0 :(得分:2)

如果出现以下情况,垃圾收集器将无法清除/处置从舞台上删除的影片剪辑:

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

  • 该剪辑仍被其他“可达”

  • 的实例引用
  • 你试图删除包含太多项目的过于复杂的层次结构[我没有任何数字,但我估计大约有2 ^ 32项?]

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

请查看以下文章了解更多信息:

http://active.tutsplus.com/tutorials/workflow/quick-tip-understanding-garbage-collection-in-as3/

答案 1 :(得分:0)

代码仍然是MovieClip的一部分。所以它仍然存在。由于MovieClip 假定 仍然附加到其父级,因此它会保留。

(我说附加到它的父节点而不是屏幕上,因为它可以让父节点引用子节点,并且子节点引用带有.parent变量的父节点,所以因为它们都有指向它们的内容,所以它们保留在存储器)。