actionscript-3 – Adob??e Air AS3,处理窗口,探查器建议库代码
发布时间:2020-12-15 01:45:16 所属栏目:百科 来源:网络整理
导读:我的应用程序创建了一个包含几个组的窗口.当窗口关闭时,GC不会收集窗口及其后代. Flash Builder Profiler帮助我找到并删除事件监听器,使我无法发现问题,因为它指向从Window.as的库代码添加的事件监听器. 具体来说,比较之前窗口打开和窗口关闭之后的闲置对象,
我的应用程序创建了一个包含几个组的窗口.当窗口关闭时,GC不会收集窗口及其后代.
Flash Builder Profiler帮助我找到并删除事件监听器,使我无法发现问题,因为它指向从Window.as的库代码添加的事件监听器. 具体来说,比较之前窗口打开和窗口关闭之后的闲置对象,并选择MyWin类(1个实例): MyPackageName.MyWin(10条路径) 10x以下行:
单击“方法”面板中的每个“功能”,我会在每个“功能”的顶部看到以下10个: spark.components:Window:creationCompleteHandler() Window.as line 2610 spark.components:Window:creationCompleteHandler() Window.as line 2613 spark.components:Window:creationCompleteHandler() Window.as line 2616 spark.components:Window:creationCompleteHandler() Window.as line 2619 spark.components:Window:creationCompleteHandler() Window.as line 2625 spark.components:Window:creationCompleteHandler() Window.as line 2639 spark.components:Window:creationCompleteHandler() Window.as line 2636 Spark.components.supportClasses:SkinnableComponent:attachSkin() SkinnableComponent.as line 694 Spark.components:SkinnableContainer:partAdded() SkinnableContainter.as line 959 Spark.components:SkinnableContainer:partAdded() SkinnableContainter.as line 957 所有这些都以某种方式从MyWin.initialize()调用. 我删除了我的代码创建的每个事件监听器,并删除了所有转换. 解决方法You can try to use System.pauseForGCIfCollectionImminent(1) http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/System.html#pauseForGCIfCollectionImminent%28%29 or try to use System.gc() in this way private var numCollected; uint = 0; private function gCollect(): void { addEventListeners(Event.ENTER_FRAME,onEFGCollect); } private function onEFGCollect(event: Event): void { numCollected++; System.gc(); if(numCollected > 2) removeEventListeners(Event.ENTER_FRAME,onEFGCollect); } 我们在单独的框架中使用System.gc()两次只是因为收集对象需要将所有这些标记为已收集 – 并且只有在System.gc()之后才能收集对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |