【问题标题】:Memory leak when using SWFLoader in Adobe AIR在 Adob​​e AIR 中使用 SWFLoader 时出现内存泄漏
【发布时间】:2011-08-11 06:17:34
【问题描述】:

我正在尝试在另一个窗口应用程序中加载窗口子应用程序,要求是在用户操作时将一个加载的应用程序替换为另一个。

我在主窗口应用程序的swfLoader 上尝试了unloadAndStop() 的记录方法,但不知何故,在内存分析过程中,即使在显式运行垃圾收集之后,我也可以看到这些应用程序的实例仍保留在内存中。

如果我将这些窗口应用程序作为模块,然后尝试使用 Moduleloader 加载它们,事情会顺利进行,并且卸载的模块会从内存中删除。

以前有人遇到过同样的问题吗?

【问题讨论】:

  • 为什么要在应用程序中加载应用程序?重点是什么?而是加载模块...
  • 您的 SDK 版本是多少? SDK 中可能存在内存泄漏,请查看 bugs.adobe.com。
  • 感谢您的回复。 @J_A_X:我想制作一组独立于 Web 运行的应用程序,并且在 AIR 的情况下显然打包在一起。我想重用整个代码,以便更好地维护。
  • @Maxim,感谢您的及时回复。在 3.X 中有一些与我类似的问题,但这些问题似乎已关闭或有所不同。不过,这个问题在我看来是完全可以重现的。
  • 这个 bug bugs.adobe.com/jira/browse/SDK-28808 怎么样?

标签: apache-flex memory-leaks air flex4.5 swfloader


【解决方案1】:

【讨论】:

    【解决方案2】:

    首先,您应该在应用程序中加载应用程序。各种疯狂的事情都可能发生。我以前也遇到过你的情况。我所做的是为任何应用程序或模块任务分离出我的实际 UI/产品。例如:

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx">
       <local:YourMainUI width="100%" height="100%" />
    </s:Application>
    

    <?xml version="1.0" encoding="utf-8"?>
    <s:Module xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx">
       <local:YourMainUI width="100%" height="100%" />
    </s:Module>
    

    你明白我的意思了吗?现在,您的产品有了一个可重用的“主要”组件,可以在任何情况下使用,甚至是 WindowedApplication 一个 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-09
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多