`

flex内存释放优化

    博客分类:
  • Flex
阅读更多
FLEX内存释放优化原则:

1. 被删除对象在外部的所有引用一定要被删除干净才能被系统当成垃圾回收处理掉;
2. 父对象内部的子对象被外部其他对象引用了,会导致此子对象不会被删除,子对象不会被删除又会导致了父对象不会被删除;
3. 如果一个对象中引用了外部对象,当自己被删除或者不需要使用此引用对象时,一定要记得把此对象的引用设置为null;
4. 本对象删除不了的原因不一定是自己被引用了,也有可能是自己的孩子被外部引用了,孩子删不掉导致父亲也删不掉;
5. 除了引用需要删除外,系统组件或者全局工具、管理类如果提供了卸载方法的就一定要调用删除内部对象,否则有可能会造成内存泄露和性能损失;
6. 父对象立刻被删除了不代表子对象就会被删除或立刻被删除,可能会在后期被系统自动删除或第二次移除操作时被删除;
7. 如果父对象remove了子对象后没有清除对子对象的引用,子对象一样是不能被删除的,父对象也不能被删除;
8. 注册的事件如果没有被移除不影响自定义的强行回收机制,但有可能会影响正常的回收机制,所以最好是做到注册的事件监听器都要记得移除干净。
9. 父对象被删除了不代表其余子对象都删除了,找到一种状态的泄露代码不等于其他状态就没有泄露了,要各模块各状态逐个进行测试分析,直到测试任何状态下都能删除整个对象为止。

内存泄露举例:
1. 引用泄露:对子对象的引用,外部对本对象或子对象的引用都需要置null;
2. 系统类泄露:使用了系统类而忘记做删除操作了,如BindingUtils.bindSetter(),ChangeWatcher.watch()函数 时候完毕后需要调用ChangeWatcher.unwatch()函数来清除引用 ,否则使用此函数的对象将不会被删除;
类似的还有MUSIC,VIDEO,IMAGE,TIMER,EVENT,BINDING等。
3. 效果泄露:当对组件应用效果Effect的时候,当本对象本删除时需要把本对象和子对象上的Effect动画停止掉,然后把Effect的target对象置null; 如果不停止掉动画直接把 Effect置null将不能正常移除对象。
4. SWF泄露:要完全删除一个SWF要调用它的unload()方法并且把对象置null;
5. 图片泄露:当Image对象使用完毕后要把source置null;(为测试);
6. 声音、视频泄露: 当不需要一个音乐或视频是需要停止音乐,删除对象,引用置null;
内存泄露解决方法:
1. 在组件的REMOVED_FROM_STAGE事件回掉中做垃圾处理操作(移除所有对外引用(不管是VO还是组件的都需要删除),删除监听器,调用系统类的清除方法)
先remove再置null, 确保被remove或者removeAll后的对象在外部的引用全部释放干净;
2. 利用Flex的性能优化工具Profile来对项目进程进行监控,可知道历史创建过哪些对象,目前有哪些对象没有被删除,创建的数量,占用的内存比例和用量,创建过程等信息;
总结:关键还是要做好清除工作,自己设置的引用自己要记得删除,自己用过的系统类要记得做好回收处理工作。 以上问题解决的好的话不需要自定义强制回收器也有可能被系统正常的自动回收掉。
分享到:
评论

相关推荐

    Flex内存释放优化原则

    FLEX内存释放优化原则,内存泄露解决方法,内存泄露情况

    FLEX内存释放优化原则

    ### FLEX内存释放优化原则详解 #### 一、引言 在FLEX开发过程中,合理的内存管理至关重要。不当的内存管理不仅会导致应用运行效率降低,还可能引发诸如黑屏、模糊显示等问题,严重影响用户体验。本文将针对“FLEX...

    Flex-memory-leak.zip_flex

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

    flex如何进行内存优化

    ### Flex内存优化技巧详解 在开发Flex应用时,合理的内存管理是提高应用性能的关键因素之一。本文将基于提供的文件信息,深入探讨如何更好地优化Flex内存使用,并通过具体实例阐述如何编写更加高效的Flex代码。 ##...

    Flex内存泄露总结

    Flex内存泄露总结主要聚焦在Flash Player的垃圾回收机制和内存管理问题上,这对于优化Flex应用程序的性能至关重要。首先,我们要理解垃圾回收的基本原理。在Flash Player中,内存的释放工作由垃圾回收器负责,它是一...

    flex内存泄露(转载)

    #### Flex内存泄露的原因 尽管AVM提供了垃圾收集机制,但Flex应用依然可能遭遇内存泄露问题。主要原因是对象引用关系导致垃圾收集器误判某些对象仍处于活动状态。具体而言: 1. **对象引用不当:** 当某个对象实际...

    Flex内存泄露问题

    以下是一些解决Flex内存泄漏的关键点: 1. **删除无用对象**:确保在不再需要对象时正确地删除它们,避免它们在内存中驻留。这包括删除事件监听器、解除绑定数据等。 2. **事件监听器管理**:事件监听器是常见的...

    Flex内存管理及相关内容.pdf

    ### Flex内存管理与垃圾回收机制详解 #### 一、引言 随着软件开发技术的不断发展,内存管理成为了软件性能优化中的关键环节之一。对于使用Flex框架进行开发的应用程序而言,理解其内存管理机制尤为重要。Flex及其...

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

    在IT行业中,内存泄漏是开发者面临的一个重要问题,特别是在使用像Flex这样的技术时。本篇内容将深入探讨Flex中的内存泄漏...记住,理解和调试内存泄漏问题需要耐心和细心,但它对于优化Flex应用的长期健康至关重要。

    Flex 性能优化全集

    ### Flex性能优化全集 #### 引言 随着技术的发展,用户对于应用程序的要求越来越高,不仅在功能上有所期待,更注重应用的响应速度与流畅度。Adobe Flex 是一款用于构建和部署跨平台富互联网应用程序的强大工具,...

    FLEX内存优化技巧集合

    以下是一些关于FLEX内存释放和优化的关键知识点: 1. **引用管理**:确保当对象不再使用时,所有外部引用都被删除。如果一个对象被其他对象引用,即使它已被删除,系统仍会认为它是活动的,无法进行垃圾回收。 2. ...

    Flex虚拟机内存管理机制及防止内存泄漏

    Flex虚拟机,全称为...了解和掌握Flex虚拟机的内存管理机制,以及采取有效的防止内存泄漏的措施,是优化Flex应用程序性能和稳定性的重要步骤。通过合理地管理内存,开发者可以创建出更高效、更稳定的Flex应用程序。

    flex 面试题flex

    【Flex面试题】Flex面试题主要涵盖Flex的基础概念、开发框架、MVC模式的应用、内存管理、垃圾回收机制、前端性能优化以及与后端通信等多个方面。以下是对这些知识点的详细解析: 1. AS2与AS3的区别: AS2...

    APE(flex out of memory)

    在IT行业中,"APE(flex out of memory)"这个问题通常是与Adobe Flex开发相关的内存溢出问题。Flex是一种开源的、基于MXML和ActionScript的框架,用于构建富互联网应用程序(RIA)。当你遇到“Out of memory-cannot ...

    Flex 有效的内存回收方法

    本文将深入探讨Flex中的内存回收方法,以帮助开发者优化应用性能并避免内存泄漏。 1. **垃圾收集(Garbage Collection)**: 垃圾收集是Flex中实现内存管理的主要机制。它自动追踪并释放不再使用的对象所占用的内存...

    经典的 flex 笔试题

    内存优化是开发中非常重要的一环,尤其对于像Flex这样的应用而言更为关键。下面将详细介绍几个重要的内存优化策略。 1. **对象释放规则**:在Flex中,对象释放遵循以下原则: - 如果一个对象不再被引用,则系统会...

    Flex垃圾回收机制

    在Flex开发中,理解并掌握垃圾回收的工作原理对于优化应用程序性能和避免内存泄漏至关重要。 1. **垃圾回收的基本原理** 垃圾回收(Garbage Collection,简称GC)是一种自动的内存管理技术,其目的是识别并释放...

Global site tag (gtag.js) - Google Analytics