`

对Flex应用程序进行剖析

阅读更多
1、 Flash Player的内存使用(与Java类似,可参照java的实现机制)

1.1、 Flash Player的内存分配
     Flash Player负责在运行时为Flex应用程序提供内存。当创建了类实例的代码行时就向操作系统申请为实例划分了一块内存。
     向操作系统请求内存的过程很慢, 所以Flash Player请求了 比其所需的更大的内存块,保证有一些额外空间以便开发者下一次请求更多内存时可用。此外,Flash Player会监视不再使用的内存以便可重用这些内存,尽可能避免向操作系统申请更多内存。

1.2、 按引用传递和按值传递(参照Java)
      分基本类型与引用类型... ...

1.3、Flash Player的垃圾收集
      垃圾收集在分配时使用,^_^ ^_^ 这一点可能让人有点迷糊。这意味着垃圾收集并不是发生在内存不再使用时,而是发生在应用程序请求更多内存时。在那个时候,垃圾收集器会尝试回收可用内存以便重新分配。
      垃圾收集器如何检测不再被使用的内存呢?
     ^_^ ^_^ 又回到了java程序员的路子上了(C++/C#也是此原理):
   A、  引用计数(效率高,但存在循环引用的问题)
   B、  标记-清除(效率较低)
   使用B方式,Flash Player会从应用程序顶层开始,标记每一个被引用的对象。它会向下递归每一个被引用的的对象并重复这个过程,持续深入向下,直到所有找到的对象都已标记。
   同时使用A/B两种方式获得更高的性能和垃圾收集的准确度。

1.4、 垃圾收集(重点)
   原理: 简单地说,不需要一个对象时,就要删除对该对象的所有引用。
    如我们常用addChild()方法添加子组件到父组件,子组件也可以通过removeChild()或者removeChildAt(int index)方法移除。
    记得在Flex应用程序中手动移除不再需要的子组件!

   ——————————————理解事件监听函数导致的泄露————————————
   addEventListener()方法,该方法允许以编程方式监听某一被广播的事件。然而广播事件的每个对象都维护着对监听该时间的每个对象的引用。就垃圾收集而言,就意味着在某些情况下,如果一个对象监听着事件,就不会被用于垃圾收集。

   解决方式:
   A、 类型removeChild一样调用removeEventListener()。在理想情况下,一个应用程序中addEventListener()和removeEventListener()调用的次数应该相等。

   B、 在监听函数中使用弱引用,如:
   var textInput:TextInput = new TextInput();
   textInput.addEventListener('change',handleTextChanged,false,0,true)
   在addEventListener()方法中可以使用两个参数:事件名以及事件发生时需要调用的方法。然而,还可以指定另外3个参数,依次为事件监听函数是否使用捕获功能、在事件中相对其他监听函数的优先级以及是否使用弱引用。最后一个参数对于垃圾回收而言很重要,因为垃圾收集器会忽略弱引用,这就意味着弱引用所关联的对象会被收集(如果该对象拥有的全部是弱引用的话)


    ^_^ ^_^ 最后提下,据说Flex有专门的剖析程序,但好像是专业版才有(要收费哟...),所以你我此等普通用户还是勤奋点自己维护吧。
分享到:
评论

相关推荐

    flex 第一步全部源码 实例源码

    本书全面、详尽、深入浅出地讲解了Flex应用开发的方方面面,从最基本的Flex概念,MXML和ActionScript 3.0语法开始,围绕Flex的技术特性和Flex应用开发中常见的疑难点展开剖析。  全书共分为17章。内容包括:Flex...

    Flex.4.0.RIA开发详解讲义

    本书由浅入深,循序渐进地讲解了如何使用Flex技术开发RIA应用程序。全书内容包括Flex简介、安装和配置Flex开发运行环境、熟悉Flex开发工具、ActionScript. 3.0语法、Flex组件开发、CSS布局、美化界面、数据传输与...

    flex 数据库留言本 源码

    本书全面、详尽、深入浅出地讲解了Flex应用开发的方方面面,从最基本的F1ex概念,MXML和ActionScript3.0语法开始,围绕Flex的技术特性和Flex应用开发中常见的疑难点展开剖析。 全书共分为17章。内容包括:F1ex简介...

    Flex第一步 源码

    本书全面、详尽、深入浅出地讲解了Flex应用开发的方方面面,从最基本的F1ex概念,MXML和ActionScript3.0语法开始,围绕Flex的技术特性和Flex应用开发中常见的疑难点展开剖析。 全书共分为17章。内容包括:F1ex简介...

    Flex第一步光盘源码

    本书全面、详尽、深入浅出地讲解了Flex应用开发的方方面面,从最基本的Flex概念,MXML和ActionScript 3.0语法开始,围绕Flex的技术特性和Flex应用开发中常见的疑难点展开剖析。  全书共分为17章。内容包括:Flex...

    flex_与JSP性能比较分析

    对单一 Flex 商店应用程序会话进行分析...................................................................5 在压力下对 Flex 商店应用程序进行比较.............................................................

    flex 第一步 源码 使用组件处理数据和交互

    本书全面、详尽、深入浅出地讲解了Flex应用开发的方方面面,从最基本的F1ex概念,MXML和ActionScript3.0语法开始,围绕Flex的技术特性和Flex应用开发中常见的疑难点展开剖析。 全书共分为17章。内容包括:F1ex简介...

    flex4 最全的 学习文档

    导出应用程序的发行版 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....

    flex与bison(中文版)带目录

    Flex和Bison的工具书。你会找到适用于新手的修订教程和适用于高级用户的参考资料,以及对每个程序的基本用法的解释,并且运用它们创建简单、独立的应用程序。

    flex & bison pdf 英文

    你会找到适用于新手的修订教程和适用于高级用户的参考资料,以及对每个程序的基本用法的解释,并且运用它们创建简单、独立的应用程序。有了《flex与bison》,你会发现这些灵活的工具提供的广泛用途。 包括的主题有:...

    使用ADOBE FLASH BUILDER 4.5

    使用 Flex 开发应用程序的基本工作流 构建用户界面 生成事件处理函数 访问数据服务 监视访问数据服务的应用程序 使用 Flex 库项目 创建自定义 MXML 组件 创建模块 将 Flex 与 HTML 应用程序集成 第 9 章: 结合...

    Cairngorm框架在Flex开发中的应用研究.nh

    3.1对Caimgorm框架分析........................ 3.1.1MVC开发模式简介.................... 3.1.2caimgorm的组成及功能............ 3.1.3caimgorm的程序开发流程........ 3.2Caimgo皿主要的开发组件.................

    基于T-FLEX 3D CAD系统的数控程序检验方案.pdf

    基于T-FLEX 3D CAD系统的数控程序检验方案.pdf

    taller_flex:flexdashboard车间

    我们将探索其他方面:如何交互地查看数据,图形和地图,如何使我们的应用程序对用户执行的操作具有React性,通过按钮,选择器,滑动条或在htmlwidgets中单击动态引入数据和参数以及自定义最终网站的外观和格式。...

    lexer:模仿flex的优雅的盔甲式JavaScript词法分析器。 易于扩展以适应您的完美需求

    模仿flex的优雅的盔甲式JavaScript词法分析器。 易于扩展,以适应您的完美需求。 安装 可以使用命令npm install lex通过将Lexer安装在上。 您也可以使用命令ringo-admin install aaditmshah/lexer将其安装在。 您...

    基于云计算的GIS应用模式研究

    在GIS 领域,有必要采用云计算技术,构建云地理信息系统,以便简化GIS 应用程序部署和管理、降低GIS 投资和运行成本,提高GIS 应用程序和基础设施的灵活性。  本文将云计算技术应用到地理信息系统领域,对云计算在...

    MemoryGraph:构建应用程序的内存图

    该应用程序将为其运行的应用程序构建一个内存图。 最终图形表示各种类型的对象之间的关系。 局限性 当前版本不支持macOS应用和纯Swift对象 适用于iOS SDK 14.4和更低版本,并且不能保证其他SDK版本不会影响应用程序...

    correlator:用于相关性分析的网络应用程序

    相关器一个基于 Django 的相关分析的 web 应用程序,使用 numpy 也(理论上)angular.js

    微信小程序开发--从block盒式布局到Flex弹性布局

    说明:为了便于理解和分析,此处我们全部使用块级元素div来进行说明。因为要将这个文档应用于博客,所以所有的样式写在style中。公众号不支持,博客样式支持不好,又重新上传了图片,替换了展示效果(泪目)。你们能...

Global site tag (gtag.js) - Google Analytics