ActionScript3.0垃圾回收器使用两种方法定位无引用的对象,引用计数法和标识清除法。
-
引用计数法,一种用于跟踪活动对象的较为简单的方法,它从ActionScript1.0开始使用。当你创建一个指向某个对象的引用,该对象的引用计数器
加1;当你删除该对象的一个引用,该计数器减1。当某对象的计数器变成0,该对象将被标记以便垃圾回收器回收。
引
用计数法简单,它不会非CPU带来巨大的负担;多数情况下它工作正常。不幸地是,采用引用计数法的垃圾回收器在遇到循环引用时效率不高。
-
标识清除法,flash
player遍历整个对象树,将一切活动对象进行标记,标记过程结束后,没有被标记的就认为可以删除了,当运行GC的时候就把这些对象删除。标识是指强引用。标记-清除法非常准确。但是,由于
Flash Player 遍历你的整个对象结构,该过程对CPU占用太多。Flash Player 9
通过调整迭代标识-清除缩减对CPU的占用。该过程跨越几个阶段不再是一次完成,变成偶尔运行。
内存泄露的原因:
-
增加了监听,不需要的时候没有删除;
-
没有移除显示列表;
-
生成的实例没有销毁;
-
。。。
总之,就是存在强引用。
避免方法:
在不需要用到某个实例的时候,消除与其关联的强引用。比如,移除不再使用的监听器,不再使用的显示对象移除显示列表等。最保险的方法是每个类有自己的GC方法,当不用的时候对应的实例运行一下。
检查方法:
用flash/flex的IDE,运行profile模式,观察“活动对象”栏目,进行监控,反复的进行一些可疑的操作。如果累计实例和当前实例的数目相等或者很接近,并且内存使用情况的曲线明显上扬,那多半是有内存泄露问题了。profile不是非常的准确,虽然也有强制GC的按钮。使用System.totalMemory进行检测是最准确的方法,但是不能看到各个实例的内存使用情况。
多说几句:
Your objects will not be removed immediately when all active references are
deleted.they will be removed at some indeterminate time in the future。
为了避免用户体现到播放器崩溃,可以检测System.totalMemory,出现异常跳转页面,记得保存好当前的游戏信息。
it is not counted in reference counting, and it is not followed for mark
sweeping.This means that if the only references remaining to an object are weak,
it will be available for collection on the next GC sweep.
officially unsupported,new
LocalConnection().connect('foo');测试可以用LocalConnection,抛出异常会执行一次GC,产品里就不要有这些代码了。
stage.window.minimize();
stage.window.restore();通过最小化和恢复窗口,可以比较环保,强制GC,但是要想办法让整个过程不被用户发现。
分享到:
相关推荐
NULL 博文链接:https://yunzhongxia.iteye.com/blog/1149772
Flex应用内存泄露的分析与诊断 FlashPlayer 虚拟机的垃圾回收机制 Flex 内存泄露的原因
关于flash垃圾回收和内存管理的问题一直困扰着很多开发者,本人也曾经烦恼过,现整理一下分享一下。
一种基于差分进化的FLASH文件系统垃圾回收算法
01-Flash&flex应用内存泄露的分析与诊断.doc
基于页合并更新的NAND_Flash垃圾回收算法研究
flash内存修改器flash内存修改器flash内存修改器flash内存修改器flash内存修改器flash内存修改器flash内存修改器flash内存修改器flash内存修改器
在Linux上,内存交换有着特殊的作用,块设备在当前...分析内存交换特点,提出了NVEA(new valid erase algorithm)垃圾回收算法并通过模型实现测试。结果证明,模型解决了Nandflash充当交换区时存在的各种问题,并且NVEA
flash原创动画,其中之一是角色动画,有一个经典贺卡,还有一个故事型flash。 时间在30到1分钟。 绝对原创。
flash内存 性能优化篇. flash内存 性能优化篇. flash内存 性能优化篇. flash内存 性能优化篇.
清理flash垃圾缓存
flash 调试利器,可以局域网pc -pc - mobile等之间调试。非常方便。 还可以查看内存泄露等
在嵌入式中,数据保存在FLASH中管理机制
有关flex 内存泄漏memory leak介绍的ppt. flash player的内存泄漏实在搞的我头大了
强大的flash破解工具,内存提取资源,支持自定义数据加密标签破解。
一种基于差分进化的Flash文件系统垃圾回收算法.pdf
易语言载入内存FLASH源码,载入内存FLASH,创建,取窗口句柄,移动,左边,顶边,宽度,高度,置对象,取对象,释放对象,取ReadyState,取TotalFrames,取Playing,置Playing,取Quality,置Quality,取ScaleMode,置ScaleMode,取...
Flash Player 是如何完成垃圾回收的? Flash Player 是如何优化渲染显示的? 你该如何处理以下问题: 事件监听和字典 Flex 中的延迟验证模式 布局 AIR 的相关问题 Flash Builder Profiler
对于自己的“flash build 4.6 报错 内存不足,无法加载...”笔记中的APE文件的下载,如果有这样的错误的可以再百度上搜“flash build 4.6 报错 内存不足,无法加载... horizon~~~”看看是否符合情况,这个文件不设定...