我已经基于时间线了解编程中的所有问题,但我很想知道在那种情况下垃圾收集器会发生什么。
谈论时间轴中的代码 - 如果代码与它不在同一帧中,则无法访问movieclip,这是否会增加内存泄漏的可能性?
对我来说,当“播放头”当前在它的框架上时会添加时间轴中的动画片段,并在播出时将其删除。
答案 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变量的父节点,所以因为它们都有指向它们的内容,所以它们保留在存储器)。