flash – 在要对象的对象中设置对null的引用?
// in a garbage collected VM,destroy someObject: someObject.a = null; someObject.b = null; someObject = null; 我听说在像Java或C#这样的好的虚拟机中,你不应该这样做.将someObject的a和b设置为null将减慢垃圾收集速度,因为GC需要更长的时间才能发现之前引用的对象a和b不再被引用,而如果保留它们完好无损,GC将在清理时立即检查它们someObject. 假设我听到的是真的(如果没有,请纠正我),AVM2,ActionScript 3 VM(特别是最新版本的Flash Player)是否相同? 我问的原因是我有一个同事这样做,因为他在前雇主那里学到了它更快,而Flash有很多这样的怪癖(我觉得很容易相信). 我只是想知道这些信息是否仍然是最新的(对于其他类似的Flash优化).根据我的经验,优化技巧在生活平台中相当快速地过时. 解决方法
我无法为您提供任何更快速的特定硬数据 – 设置为空或不.老实说,我不相信任何人会.
我能做的最好的事情是为您提供有关垃圾收集的一些信息,您可以从那里做出决定. 从Flash Player 9到Flash Player 10 Adob??e已经做了一些重大改进,特别是在内存管理方面.有几个’加载外部swf’的内存错误,未引用的声音粘在一起,等等大多数已被纠正. Grant Skinner强调了GC用于确定应删除哪些对象的技术.看看这个优秀的演示文稿(有一些很酷的互动)如何工作http://gskinner.com/talks/resource-management/(但请注意演示文稿是关于FP9) 正如他所说,有参考计数和马克清扫.最终,AS3中的GC归结为参考.如果一个对象(非初始类型)具有对它的引用将不会被删除,但如果它没有被删除,即无法访问它,它将被标记为删除.但你无法控制删除实际发生的时间 – 可能是这个框架,可能是下一个框架. 最终,在我看来,“无效”每个变量/属性(参考或其他)都是浪费且非常难以处理的.对于较小的东西可能是实用的,但是当对象变得越来越大,有100个变量时,你不能一致地将所有变量都归零. 在轨道上,Flash Player只会针对正确的做事方式优化GC,而不是相反. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |