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来对项目进程进行监控,可知道历史创建过哪些对象,目前有哪些对象没有被删除,创建的数量,占用的内存比例和用量,创建过程等信息;
总结:关键还是要做好清除工作,自己设置的引用自己要记得删除,自己用过的系统类要记得做好回收处理工作。 以上问题解决的好的话不需要自定义强制回收器也有可能被系统正常的自动回收掉。
相关推荐
Flash,Flex和AIR应用开发内存监测及优化技巧 内容摘要 Flash Player 是如何分配内存的? Flash Player 是如何完成垃圾回收的? Flash Player 是如何优化渲染显示的? 你该如何处理以下问题: 事件监听...
资源名称:Flash,Flex和AIR应用开发内存监测及优化技巧资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
包括flashbuilder 4官方教程(中文) flex 4.5手机应用开发 flex4组件开发 flex 代码规范 flex教程 flex中的css样式 flex开发手机程序 flex4界面设计实战 flex4开发ria应用程序 flash内存性能优化
随着 Adobe® Flash® Player 10.1 的发布,开发人员可以在移动设备和桌面上使用相同的 Flash Player。本文档通过代码示例 和使用案例,为开发人员概括介绍了在移动设备上部署应用程序的最佳做法。主题包括: • ...
随着 Adobe® Flash® Player 10.1 的发布,开发人员可以在移动设备和桌面上使用相同的 Flash Player。本文档通过代码示例 和使用案例,为开发人员概括介绍了在移动设备上部署应用程序的最佳做法。主题包括: • ...
flash/air 在移动开发时 内存 渲染等都会影响性能 文档图文并茂的介绍了影响性能的各个方面 通俗易懂 适合入门
强大的Lua引擎, 为mcu和物联网设备高度优化, 支持众多组件, 非常低的内存需求(最低16K RAM, 128K Flash)。适用于物联网设备的强大嵌入式Lua引擎是一种功能强大的工具,它为开发人员提供了许多组件和功能,同时具有低...
10.2 在Flex中使用Flash CS所开发的控件 306 10.3 Flex访问.Net 308 10.3.1 Fluorine的安装和配置 309 10.3.2 Flex通过Fluorine访问.NET 311 10.4 小结 314 附录 Flex Builder 3中的项目如何迁移至Flash ...
有时候为了成本和项目需求综合考虑,不得不选用小Flash的MCU,我们苦逼的攻城狮们为了缩减Flash的空间打开各种优化,一个字节字节的裁剪),不过它使用的是IAR开发环境,这个…该咋办捏,下面我简单讲讲这个问题。
qmang2d 什么是qmang2d? 它是一个跨平台的游戏引擎。可以帮助我们轻松开发大型网页游戏和手机游戏... 首先,您应该设置Flashbuilder或Flashdevelop IDE等。 第二,导入此ActionScript3项目。 一切都会变得如此简单
第1章 开发环境 1 1.1 环境设置 2 0001 如何定制工具栏 2 0002 如何定制组件面板 2 0003 如何定制代码编辑器 3 0004 保存自定义开发环境桌面 4 1.2 组件安装 4 0005 安装ActiveX组件 4 0006 安装...
第1章 开发环境 1 1.1 环境设置 2 0001 如何定制工具栏 2 0002 如何定制组件面板 2 0003 如何定制代码编辑器 3 0004 保存自定义开发环境桌面 4 1.2 组件安装 4 0005 安装ActiveX组件 4 0006 安装...
第3部分为实战篇,分析了Nginx在国内知名网站(如新浪播客、金山逍遥网等)中的应用案例,以及Nginx在Flash FLV视频点播、小内存VPS服务器上的优化等内容;第4部分为模块篇,对Nginx的各项模块进行了集中介绍,可以...
优化 Flash 动画 118 为场配置 SpeedScreen Flash Acceleration 119 为服务器配置 SpeedScreen Flash Acceleration 120 优化图像文件吞吐量 120 优化图像文件的显示 121 优化键盘和鼠标响应能力 121 配置 ...
ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充) ASP.NET2.0中themes、Skins轻松实现网站换肤! ASP.NET 2.0 中的代码隐藏和编译 ASP.NET 2.0 Language Swithcer and Theme Swicher 多语言转换和多样式主题...
优化上传功能,Flash批量上传全新改造;新版新增给用户打标签的功能,站长可以设置一些触发条件,当用户参与后,就会自动设置一个标签,从而可以精确实现对站内用户的画像;针对用户的管理,增加用户违规记录档案,让...
优化 开发面板功能 2.增加 快速初始化wke 功能 3.发布浏览框模块当前版本的快速入门教程 1.9(2018-7-20 06:38:59) 1.增加 启动开发面板 功能 (可以在运行的时候进行代码开发测试) 1.8...
- Kodexplorer为千帆网络工作室开发的一款服务器文件管理程序。 - 完美取代FTP管理:可用于服务器文件管理,zip解压缩 备份还原、支持图片、音乐、视频预览、office、pdf等格式在线预览。文件夹拖拽上传……。 - ...
删除功能在 商品->批量处理->(选中商品后提交) 同时废弃原来的AJAX 修改商品名称,分类 等模式调整 废弃原文件上传模式,使用FLASH上传 (带进度条) 修复 商品添加时使用扩展属性时的报错的问题修复 确认订单支付时报错...