1

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

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

在我看来,当“播放头”当前位于其帧上时,时间轴中的影片剪辑被添加,并在它消失时被删除。

4

2 回答 2

2

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

  • 该剪辑仍在播放并做一些事情(创建/删除其他事情......)

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

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

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

请查看以下文章以获取更多信息:

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

于 2012-08-02T17:02:28.037 回答
0

该代码仍然是该影片剪辑的一部分。所以它仍然存在。并且由于假定MovieClip仍附加到其父级,因此它保持不变。

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

于 2012-08-02T14:59:50.050 回答