Flex内存泄露问题定位

使用Flash Builder IDE的内置的profile内存分析工具

打开profile工具

右击整个工程  “Profile As”  Web应用程序,打开FB内置的内存分析工具。

检测内存使用情况

右上角是内存峰值和当前总内存的监视器

下面的活动对象是各个对象现在的使用情况,包括累计实例数、当前实例数、累计内存、当前内存大小。我们一般最关心当前的实例数和当前的内存占用情况。

可以在页面做任何操作,所有的内存波动都反映到这个监控页面上


分析主要原因

我们的MVC架构中,是以事件作为消息传递机制,而我们原来只加了监听,没有清除动作,所以此监听涉及的部分不会被AVM回收。

代码中的全局变量,存储一些中间信息,这种全局变量不清空,引用所涉及的内存不会被释放

子对象无法释放,导致父对象无法释放


代码实现简述

主要释放全局变量和移除监听, 尤其注意每次释放监听

 如果不是全生命周期的监听,要设置成弱引用

监听函数最后一个参数设为TRUE,标识弱引用

释放父变量前,要确保子变量释放

对于关键对象,自定义子类,监视所有监听的添加情况

覆写addEventListener方法,监视所有监听的添加,保存所有监听于全局变量,便于回收时,移除所有监听

释放此对象时,一次性释放所有的监听


参考

http://blog.csdn.net/lena_20081215/article/details/3735708



你可能感兴趣的:(Flex内存泄露问题定位)