actionscript-3 - Adobe Air AS3,配置窗口,profiler 建议库代码

标签 actionscript-3 air flex4

我的应用程序创建了一个包含几个组的窗口。当窗口关闭时,GC 不会收集窗口及其后代。

Flash Builder Profiler 帮助我找到并删除了事件监听器,以至于我无法发现问题,因为它指向从 Window.as 的库代码中添加的事件监听器.

具体来说,比较开窗前和关窗后的游荡对象,选择MyWin类(1 个实例):

MyPackageName.MyWin(10 个路径)

10 倍以下行:

Function [savedThis] 569222 GCRoot:Yes bytes:308



单击“方法”面板中的每个“函数”,我会在每个“函数”的顶部看到以下 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() 才能收集对象。

关于actionscript-3 - Adobe Air AS3,配置窗口,profiler 建议库代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789982/

相关文章:

ios - 从 iOS8 上的 CameraRoll 加载图像读取 EXIF 方向标签

flash - 如何将 AIR 4.0 SDK 安装到 Flash Pro CC 中

apache-flex - Flex AIR Sqlite 作为嵌入式数据库

ios - {FlashDevelop} 使用 AIR 和 FlashDevelop 构建 iOS

performance - Adobe AIR 与 iOS 8 相关的问题和性能不佳

jquery - $(document).ready(function() {}) 在 Flex 应用程序加载到我的页面之前运行

ios - 关闭软键盘后 Flex 4.6 IOS 屏幕不展开

flex4 - 滚动 Spark ItemRenderer 会将 View 状态切换为默认状态!

javascript - 为什么当我使用像字符串这样的 JSON 传递参数时,ExternalInterface 会中断?

arrays - AS3从字母表数组中获取随机唯一字符