使用Flash Builder IDE的内置的profile内存分析工具
打开profile工具
右击整个工程 “Profile As” Web应用程序,打开FB内置的内存分析工具。
检测内存使用情况
右上角是内存峰值和当前总内存的监视器
下面的活动对象是各个对象现在的使用情况,包括累计实例数、当前实例数、累计内存、当前内存大小。我们一般最关心当前的实例数和当前的内存占用情况。
可以在页面做任何操作,所有的内存波动都反映到这个监控页面上
分析主要原因
我们的MVC架构中,是以事件作为消息传递机制,而我们原来只加了监听,没有清除动作,所以此监听涉及的部分不会被AVM回收。
代码中的全局变量,存储一些中间信息,这种全局变量不清空,引用所涉及的内存不会被释放
子对象无法释放,导致父对象无法释放
代码实现简述
主要释放全局变量和移除监听, 尤其注意每次释放监听
如果不是全生命周期的监听,要设置成弱引用
监听函数最后一个参数设为TRUE,标识弱引用
释放父变量前,要确保子变量释放
对于关键对象,自定义子类,监视所有监听的添加情况
覆写addEventListener方法,监视所有监听的添加,保存所有监听于全局变量,便于回收时,移除所有监听
释放此对象时,一次性释放所有的监听
参考
http://blog.csdn.net/lena_20081215/article/details/3735708