`

【转载】Flex内存泄露解决方法和内存释放优化原则

    博客分类:
  • Flex
阅读更多

http://developer.51cto.com/art/201007/214991.htm

 

你对Flex内存泄露的概念是否了解,这里和大家分享一下Flex内存释放优化原则和Flex内存泄露解决方法,希望本文的介绍能让你有所收获。

Flex内存释放优化原则

1.被删除对象在外部的所有引用一定要被删除干净才能被系统当成垃圾回收处理掉;

2.父对象内部的子对象被外部其他对象引用了,会导致此子对象不会被删除,子对象不会被删除又会导致了父对象不会被删除;

3.如果一个对象中引用了外部对象,当自己被删除或者不需要使用此引用对象时,一定要记得把此对象的引用设置为null;

4.本对象删除不了的原因不一定是自己被引用了,也有可能是自己的孩子被外部引用了,孩子删不掉导致父亲也删不掉;

5.除了引用需要删除外,系统组件或者全局工具、管理类如果提供了卸载方法的就一定要调用删除内部对象,否则有可能会造成Flex内存泄露和性能损失;

6.父对象立刻被删除了不代表子对象就会被删除或立刻被删除,可能会在后期被系统自动删除或第二次移除操作时被删除;

7.如果父对象remove了子对象后没有清除对子对象的引用,子对象一样是不能被删除的,父对象也不能被删除;

8.注册的事件如果没有被移除不影响自定义的强行回收机制,但有可能会影响正常的回收机制,所以最好是做到注册的事件监听器都要记得移除干净。

9.父对象被删除了不代表其余子对象都删除了,找到一种状态的泄露代码不等于其他状态就没有泄露了,要各模块各状态逐个进行测试分析,直到测试任何状态下都能删除整个对象为止。

Flex内存泄露举例:

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;

Flex内存泄露解决方法:

1.在组件的REMOVED_FROM_STAGE事件回掉中做垃圾处理操作(移除所有对外引用(不管是VO还是组件的都需要删除),删除监听器,调用系统类的清除方法)
先remove再置null,确保被remove或者removeAll后的对象在外部的引用全部释放干净;

2.利用Flex的性能优化工具Profile来对项目进程进行监控,可知道历史创建过哪些对象,目前有哪些对象没有被删除,创建的数量,占用的内存比例和用量,创建过程等信息;
总结:关键还是要做好清除工作,自己设置的引用自己要记得删除,自己用过的系统类要记得做好回收处理工作。以上问题解决的好的话不需要自定义强制回收器也有可能被系统正常的自动回收掉。

分享到:
评论

相关推荐

    Flex内存释放优化原则

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

    FLEX内存释放优化原则

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

    flex内存泄露(转载)

    ### Flex应用内存泄露的分析与...理解Flash Player虚拟机的垃圾回收机制及常见的内存泄露场景有助于开发者采取有效措施预防和解决此类问题。通过遵循最佳实践和利用适当的工具,可以显著降低Flex应用中内存泄露的风险。

    Flex 应用内存泄露的分析与诊断

    7. 定期检查和优化代码:定期进行代码审查,寻找可能导致内存泄露的潜在问题,同时在开发过程中养成良好的编程习惯。 总之,理解 FlashPlayer 的垃圾回收机制和 Flex 中对象引用的管理是防止内存泄露的关键。通过...

    Flex内存泄露总结

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

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

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

    Flex内存泄露问题

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

    flex 内存泄露管理 内存泄露

    总结来说,避免Flex中的内存泄露需要开发者细心地管理和释放事件监听器、子对象引用、静态变量、CSS样式、UI组件、图片资源以及其他加载的媒体和网络资源。遵循这些最佳实践,可以显著提高Flex应用的性能和稳定性。

    01-Flash&flex应用内存泄露的分析与诊断.doc

    Flex是Adobe开发的一种用于构建富互联网应用程序(RIA)的框架,它主要基于ActionScript编程语言,编译后的代码在Flash ...通过遵循这些原则,开发者可以有效地减少Flex应用中的内存泄露,从而提高应用的性能和稳定性。

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

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

    flex如何进行内存优化

    ### Flex内存优化技巧详解 在开发Flex应用时,合理的内存管理是提高应用性能的...开发者需要时刻关注内存使用情况,并采取适当的措施来优化内存管理策略。通过遵循上述建议,可以显著提高Flex应用程序的性能和稳定性。

    flex编译优化方法

    Flex编译优化方法是提升开发效率的关键,尤其是在大型Flex项目中,编译时间长和Eclipse性能问题可能严重影响开发流程。以下是一些针对Flex编译慢的优化策略: 1. **关闭不必要的项目**:在Eclipse中,确保只开启...

    FLEX内存不足,无法使用设计模式的解决办法

    按照描述中的步骤操作后,这些DLL文件会与Adobe Flex的运行环境进行集成,可能通过优化内存分配或提供更高效的渲染机制,从而解决内存不足的问题,使设计模式可以正常工作。 总结来说,当遇到FLEX内存不足导致无法...

    flex 性能,查看内存

    Flex应用通常涉及大量的交互和动态数据处理,因此性能优化和内存管理是开发过程中的关键环节。以下是对Flex性能优化和内存查看的深入探讨: 1. **Flex性能优化**: - **代码优化**:减少不必要的计算,避免在循环...

    Flash,Flex和AIR应用开发内存监测及优化技巧

    Flash、Flex和AIR是Adobe公司推出的RIA(富互联网应用)开发平台的重要组成部分。...开发者需要理解Flash Player的内存管理机制,并运用适当的编程技巧和工具来监控和优化内存使用,确保应用的性能和稳定性。

    Flex 有效的内存回收方法

    9. **生命周期管理(Object Lifecycle)**: 理解Flex组件的生命周期对于优化内存使用至关重要。当组件创建、显示、隐藏或销毁时,应确保正确地释放资源。 10. **缓存策略(Caching Strategies)**: 对于频繁使用的...

    Flex内存管理及相关内容

    ### Flex内存管理及相关内容 #### 一、Flex与ActionScript中的内存管理机制 Flex作为一种用于构建RIA(Rich Internet Applications)的应用框架...通过遵循上述原则和最佳实践,可以显著提高应用程序的稳定性和性能。

Global site tag (gtag.js) - Google Analytics