`
nlslzf
  • 浏览: 1026109 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex/AS 3 memory leak ---flex 内存泄露严重

    博客分类:
  • flex
阅读更多
http://www.cnblogs.com/janyou/archive/2008/11/25/1340753.html
从目前情况看,Flex 3(AS3)存在严重的memoy leak(内存泄露)问题,这些问题中一部分可以合适的编码方式来避免,还有一些问题目前只有等待Flex SDK更新了。

感觉Flex 的商业应用目前只能在初级阶段。

      列举一些产生memoy leak的情景。

  (1)Event Listeners
                Listening to parent objects does cause memory leaks

                e.g.

                    override protected function mouseDownHandler(…):void {
                     systemManager.addEventListener(“mouseUp”, mouseUpHandler);

              you can:

                1.Removing the addEventListener (when dispose).

                  systemManager.removeEventListener(“mouseUp”, mouseUpHandler);

                2. Use of weak reference listeners

                  override protected function mouseDownHandler(…):void {
                  systemManager.addEventListener(“mouseUp”, mouseUpHandler, false, 0, true);

              These do not block garbage collection(generally do not cause memory leaks):

Weak References
Self References
References to Child Objects
                    weak reference event listener  e.g.

                      someObject.addEventListener(MouseClick.CLICK, handlerFunction, false, 0, true);

                   Self References  e.g.

                       this.addEventListener(MouseClick.CLICK, handlerFunction);

                   childObject event listener e.g.

        private var childObject:UIComponent = new UIComponent;
        addChild(childObject);
        childObject.addEventListener(MouseEvent.CLICK, clickHandler);

           建议对所有addEventListener都要removeEventListener,或是使用Weak References .



         Reference :
          http://blogs.adobe.com/aharui/2007/03/garbage_collection_and_memory.html

           http://www.dreamingwell.com/articles/archives/2008/05/understanding_m.php   

       

(2)   static members
           e.g.

          Class (或MXML)中有:

           public static var _eventService : MyService=new MyService();

          在dispose时,需要设置:

          _eventService =null;

       

(3)module (未解决)
          moduleLoader unloadModule后

         ModuleInfo 并不会被GC.

         Garbage Collection in a MultiCore Modular Pipes Application

        这篇文章介绍了一种GC策略,感觉对于ModuleInfo 的GC无效。



(4)CSS Style
          module 中如果使用了shell的CSS定义或是<mx:Style> 这样的定义,那么这个module将不能GC.

          弹出的窗口应该是同样的结果.

         解决方法,使用动态CSS文件

       module   init中

         StyleManager.loadStyleDeclarations("css/myStyle.swf");

      module  dispose中

         StyleManager.unloadStyleDeclarations("css/myStyle.swf"); 



(5)TextInput/Textarea(未解决)
          如果module中有window使用了TextInput/Textarea控件,不点击没有问题,只要点上去,那么很遗憾了,module和所在窗体将不能被GC.

         这个BUG非常严重,目前还没有解决方法。

         memory leak when using TextInput and TextArea when click the keyboard这里面附加的解决方法无效。

        通过profiler分析,应该和Focusmanager有关,只有一点击就不会释放。



(6)CursorManager.setCursor
        使用了

          cursorID = CursorManager.setCursor(iconClosed);

         dispose时要

           CursorManager.removeCursor(cursorID);



(7)Bitmap
           如果使用Bitmap,结束时需要调用其dispose方法,否则内存消耗巨大。

var bmp:Bitmap  =new Bitmap();

........

if (bmp.bitmapData!=null) {
bmp.bitmapData.dispose();
}



(8) 其他
          binding也疑似有memor leak 问题。

         ......

         感觉Flex/AS 3离商业开发还有很长的路要走。
分享到:
评论
2 楼 nlslzf 2009-10-07  
是不是4.0以上的sdk才可以?
3.X的还是不行?
1 楼 wuxi15932077655 2009-10-06  
现在他发的这个问题已经是去年11月份了,现在出的SDK的哪个新版本可以解决这些问题!

相关推荐

    node-memory-leak-tutorial, 在节点中,调试内存泄漏的教程.zip

    node-memory-leak-tutorial, 在节点中,调试内存泄漏的教程 调试 node.js 中的内存泄漏这是在 node.js. 中调试内存泄漏的快速教程步骤 1: 安装调试工具首先,你需要安装 v8-profiler 模块。 如果不需要在应用程序中...

    memory-leak-detector

    内存泄漏检测器 MemoryLeakDetector是由Xigua视频android团队开发的本地内存泄漏监视工具。 它具有访问简单,监视范围广,性能优良和稳定性好的优点。 它被广泛用于ByteDance的主要应用程序的本机内存泄漏管理中,其...

    有关flex 内存泄漏memory leak介绍的ppt

    有关flex 内存泄漏memory leak介绍的ppt. flash player的内存泄漏实在搞的我头大了

    valgrind-arm64.zip

    valgrind内存检测工具使用方法: adb push .\valgrind-arm\Inst\data\local\Inst /data/local #adb shell #cd /data/local/Inst /data/local/Inst # chmod -R 777 bin /data/local/Inst # chmod -R 777 lib LD_...

    memory leak

    memory leak 教程,一步一步解决内存泄漏。

    Flex-memory-leak.zip_flex

    Flex内存泄露问题 FLEX内存释放优化原则 对于Flex性能我想是很多真正打算用它的人最关心的问题,也是我用了这么久之后体会比较深刻的问题, 目前我做过的系统性能也是一个大问题,在这里我总结了一些在技术上提高...

    80-NJ221-1-REV-B-Android-Memory-Leak-Debug-User-Guide

    高通原创内存泄漏指导文档

    javase源码-classloader-leak-prevention:ClassLoader泄漏预防/保护

    &gt;classloader-leak-prevention-servlet3&lt;/ artifactId &gt; &lt; version &gt;2.7.0&lt;/ version &gt; &lt;/ dependency &gt; 如果您遇到 Servlet 3.0 模块的问题,请尝试下面的 Servlet 2.5 替代方案。 由于 ,这意味着如果...

    BREW Memory Leak Checker 20120219

    本程序是一个在模拟器上定位BREW应用程序内存泄露位置的工具,可以给出内存泄露位置的调用栈信息(包括MALLOC/REALLOC被调用的位置,也能定位到ISHELL_CreateInstance被调用的位置)。 This program is a tool that...

    tracing-a-memory-leak-in-a-long-running-eventmachine-application-en:推介会

    给作者表演 rake发布 rake publish对于观众安装 gem install rabbit-slide-pmq20-tracing-a-memory-leak-in-a-long-running-eventmachine-application-en表演 rabbit rabbit-slide-pmq20-tracing-a-memory-leak-in-a...

    file-leak-detector JDK1.6可用版本

    file-leak-detector JDK1.6可用版本,是一个java环境下探测文件句柄泄漏的探针,使用方法详见https://www.cnblogs.com/zxporz/p/9207559.html

    quarkus-memory-leak-analysis:内存泄漏分析

    夸库斯内存泄漏 内存泄漏分析 该项目基于Quarkus quickstarts项目 版包含我们要调查的内存泄漏 版本已修复此问题! 基础项目变更 记录一些东西以揭示问题 在此示例中,我们使用默认记录器 在内部,Quarkus使用和...

    leak-watcher-1.0.0-sources.jar

    leak-watcher-1.0.0-sources.jar,JVM内存泄漏检测,

    Android_memory-leak-debugging.pdf.zip_Android memory le_android_

    Android_内存泄漏调试 对于ANDROID游戏开发非常有用!

    openssh-5.8p2.tar.gz

    exploited, can result in a leak of memory contents. After patching, private keys and certificates exposed to services running this code (for example web/mail server SSL certificates) should be ...

    swift-leak-check

    迅捷检漏仪框架,一种命令行工具,可以检测到在escaping关闭中由于强烈捕获的self而导致的潜在内存泄漏例子该工具检测到的一些内存泄漏示例: class X { private var handler: (() -&gt; Void ) ! private var ...

    delphi 7 gif控件

    // Target: Win32, Delphi 2, 3, 4 & 5, C++ Builder 3 & 4 // // Author(s): anme: Anders Melander, anders@melander.dk // // fila: Filip Larsen // // rps: Reinier Sterkenburg // // Copyright: (c) 1997-...

    侯捷的多型与虚拟的sourc ecode

    // (7) File operations (New, Open, Save, SaveAs) // (8) Multiple Documents // (9) MDI // (10) Subscribe-Notify protocol // (11) OnWindowNew(), CMyView3, AfxWinTerm(), ExitInstance(), OnAppHotKeyHelp()...

    内存泄露(memory leak)资料小全

    内存泄露(memory leak)资料,网上收集的,感谢原作者

    taro-memory-leak-issue

    taro-memory-leak-issue

Global site tag (gtag.js) - Google Analytics