如何使Flex / ActionScript 3对象符合垃圾回收的条件?拇指规则是什么? ...如果在其他地方得到回答,我会道歉。
答案 0 :(得分:4)
答案 1 :(得分:3)
基本上,您需要删除所有对象事件侦听器并删除对它的所有引用,使其对应用程序的其余部分完全不可用。
删除事件侦听器对于*.removeEventListener(event type, function)
非常有用,并且使用delete(varName)
删除引用。
执行上述操作大部分时间都会正常工作,但仍有一些情况下这还不够,要真正利用garbace集合,您需要在代码的所有方面都包含支持实践,而不仅仅是在您想要的时候删除一些东西
zombiegx在寻找更多信息时发布了您最大的两项资产。
答案 2 :(得分:1)
关于它的大部分内容都包含在上面列出的博客文章中,但基本的细分是:
答案 3 :(得分:0)
http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html
这是我发现的有关垃圾收集的最佳文档。简而言之,VM2使用一种名为Mark Sweeping的技术。它基本上遍历应用程序的每个对象,如树,并标记它们。可以取消分配不再标记的任何对象。这个过程发生在很多帧上,而不是一次完成。
因此,对于符合垃圾收集条件的内容,不得对其进行任何引用,例如,必须将其从显示列表中删除,不得其他对象包含引用。
要注意的一件事是弱参考。例如,Dictionary对象可以通过传入布尔值来使用弱引用。这意味着当一个对象被放置在已被设置为使用弱引用的字典中时,它将不计入引用,因此有资格进行垃圾收集(假设没有其他引用)
答案 4 :(得分:0)
明确地读到这个:Grant Skinner - Resource management for as3。这将告诉您有关FlashPlayers垃圾收集器的所有信息,并向您展示一堆提示。使用as3的每个人都应该阅读它!