`
shake863
  • 浏览: 664765 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flash开发中的内存优化

    博客分类:
  • AS
阅读更多

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内存 性能优化篇.

    然而,由于其物理特性和工作原理,Flash内存的性能优化是开发人员面临的一大挑战。本篇将深入探讨Flash内存性能优化的关键点。 首先,理解Flash内存的工作原理至关重要。Flash内存由许多单元格组成,每个单元格可以...

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

    Flash、Flex和AIR是Adobe...综上所述,内存监测和优化在Flash、Flex和AIR应用开发中至关重要。开发者需要理解Flash Player的内存管理机制,并运用适当的编程技巧和工具来监控和优化内存使用,确保应用的性能和稳定性。

    flash builder 内存不足 无法加载设计模式

    标题中的“Flash Builder 内存不足 无法加载设计模式”是指在使用Adobe Flash Builder这款集成开发环境(IDE)时,由于系统内存资源不足,导致软件无法正常启动或运行设计视图。这通常发生在处理大型项目或者同时...

    Flash开发性能优化宝典

    总的来说,优化Adobe Flash平台的应用性能涉及多个方面,包括但不限于:高效使用AS3.0、对象池管理、内存优化、渲染优化、事件处理、数据处理和硬件加速。通过深入理解这些知识点,并在实践中灵活运用,可以显著提升...

    FLASH开发内存cpu控制

    在Flash开发中,优化内存和CPU的使用是至关重要的,这直接影响到项目的性能和用户体验。以下是一些关键的注意事项,帮助开发者更好地控制内存和CPU资源。 1. **移除监听器**:在不再需要事件监听器时,务必及时移除...

    Flash强制垃圾内存回收测试

    然而,在某些情况下,我们可能需要主动触发垃圾回收,比如在内存占用过高或测试内存优化时。这通常被称为“强制垃圾回收”。 `MemeryGcTest.as`这个文件很可能是一个用于测试Flash垃圾回收的源代码文件。在AS3中,...

    Flash开发iOS应用

    三、移动设备中Flash应用性能基本优化技巧 - 减少图形复杂度:优化图形资源,避免使用过于复杂的矢量图形,减少渲染负担。 - 合理利用缓存:合理使用缓存机制,减少重复加载和计算,提高响应速度。 - 避免内存泄漏:...

    一种新的适用于Nandflash的Linux内存交换模型.pdf

    模型基于虚拟内存页面映射的原理,旨在优化Nandflash的垃圾回收算法,以提高性能和减少不必要的擦除操作。新提出的算法被称为NVEA(New Valid Erase Algorithm),其目标是有效地管理Nandflash的擦除和写入过程,...

    Flash优化

    5. **工具辅助**:博文标签提到了“工具”,可能是指使用各种Flash开发和分析工具进行优化。比如,Flash Professional IDE的性能监视器可以帮助开发者识别性能瓶颈,而Flash Builder等集成开发环境提供了代码提示和...

    wince 关于flash开发

    综上所述,基于WCE5.0的Flash开发是一项综合性的任务,涵盖了从选择和集成合适的Flash Player,到优化性能、保证安全性和用户体验等多个方面。开发者需要具备深厚的嵌入式系统知识,以及对Flash技术的深入理解。

    嵌入式linux 内存使用与优化

    4. **内存优化策略**: - **减少内存碎片**:通过合理分配和释放内存,避免内存碎片的产生。 - **内存池**:预先分配一大块内存,按需划分,减少系统开销。 - **内存对齐**:确保数据在内存中的位置符合特定边界...

    Flash平台技术的优化 (中文PDF)

    《Flash平台技术的优化》是一本专注于探讨如何提升Flash应用程序性能的专业资料,主要针对使用Flash进行Web开发的人员。在2000年初至2010年代中期,Flash是互联网上多媒体内容和互动应用的重要载体,因此,优化Flash...

    flash游戏开发教程

    在IT行业中,Flash游戏开发是一项历史悠久的技术,尤其在互联网初期,Flash因其强大的动画制作和交互功能,成为游戏开发者们的首选工具。本教程“Flash游戏开发教程”旨在引导初学者掌握如何利用Flash进行游戏制作,...

    FLEX和Actionscript开发FLASH游戏 flash游戏开发文档

    至于Flash游戏开发中的其他关键概念,包括资源管理、优化和调试。有效的资源管理意味着合理地加载和卸载游戏资源,避免内存泄漏。ActionScript提供了Loader类来处理图像、SWF文件和其他资源的加载。优化是确保游戏在...

    flash开发IOS程序

    本书讨论了如何在Flash中优化图形资源,减少内存占用,以及如何利用AIR的特性进行代码优化,从而提升应用的运行效率和响应速度。 ### 五、多媒体内容集成 Flash以其处理多媒体内容的能力而闻名,本书介绍了如何在...

    flash游戏优化技巧

    本节将重点介绍几种常见的优化手段:代码优化、图像优化、内存优化以及显示优化。 #### 三、代码优化技巧 ##### 3.1 脚本运行速度的检测 为了确定哪些代码段耗时较多,可以使用`getTimer()`函数来记录代码的执行...

    Flash闪存设备接口设计和驱动开发

    Nor Flash和Nand Flash是两种常见的闪存类型,主要用于嵌入式系统中的存储。Nor Flash以其快速的随机读取能力、直接执行代码的特性以及较高的存储可靠性,常被用于存储操作系统、固件和其他关键程序。而Nand Flash则...

    flashdevelop开发工具

    通过使用FlashDevelop,开发者可以直接看到性能指标,例如CPU和内存使用情况,有助于优化代码性能,提高应用程序的运行效率。 10. **文档和教程**: 通过"Readme-说明.htm"这样的文件,用户可以获取关于软件安装...

    Flash开发面试题

    在Flash开发中,面对复杂的对象层次结构,寻找特定实例是常见需求。例如,已知一个类实例`object`,需查找其中是否存在名为`m`的实例,无论其位于对象树的哪个层级。解决这一问题的有效策略是采用深度优先搜索(DFS...

    优化Flash性能 Optimizing Flash performance

    在IT领域,尤其是在游戏开发、互动媒体设计以及网络应用程序中,Adobe Flash因其强大的动画和交互功能而被广泛使用。然而,随着技术的发展,Flash的性能优化成为了一个关键议题,因为性能不佳可能导致用户体验下降,...

Global site tag (gtag.js) - Google Analytics