在Java中我们不必担心内存的问题,因为Java能够自动回收不被使用的内存,那么Flex中有没有相似的内存管理机制(GC)呢?
Flex程序运行在as虚拟机(AVM)上,由AVM完成垃圾回收的工作,即使这样,如果代码质量不高还是会存在内存泄漏的情况的。
一、垃圾回收的时机
Flash Player在运行时请求内存的速度受限于浏览器,Flash Player采用小量请求大块内存,而不是大量请求小块内存的内存请求策略。而且Flash Player在运行时释放内存速度也相对较慢,所以Flash Player会减少释放内存的次数,只有在必要的时候才释放内存。也就是说,Flash Player的垃圾回收只有在必要的时候才会执行。
并不是每次应用申请内存时都会导致垃圾回收的执行,只有当Flash占用的内存紧张到一定程度时才会执行真正的垃圾回收。概括来说就是以下2点:
1.何时真正执行垃圾回收不可预知。
2.垃圾回收总是在请求内存的时候触发,而不是在对象删除时发生。(也不是立即执行垃圾回收,而是延时的)
二、如何强制执行垃圾回收?
走点旁门左道吧:
try{
(new LocalConnection).connect("mulinrj");
(new LocalConnection).connect("mulinrj");
}catch(err:Error){
}
try中那两句语句只是为了让程序出错,错误的参数可以千奇百怪,当然"mulinrj"经测试是最效率的参数之一,也是比较推荐的一个,连错两次系统就会强制执行垃圾回收机制,从而达到释放一定内存的效果 。
三、开发中导致内存泄露的常见情况
只要对象被其他活动对象(仍在运行的)所引用,那么这个对象就不会被垃圾回收,从而可能造成内存泄露。
1、被全局对象所引用的对象在它们不再使用时,开发者忘记从全局对象上清除对它们的引用就会产生内存泄露。常见的全局对象有stage,主Application,类的静态成员以及采用 singleton 模式创建的实例等。如果使用第三方框架,比如:PureMvc,Cairongorm 等,要注意这些框架的实现原理,尤其要注意框架里面采用singleton 模式创建的controler 和Model。
2、无限次触发Timer定时器
四、常见的内存剖析工具
Flex Builder3 Pro版右击项目选择Profiler可以用来帮助我们识别内存泄露。
分享到:
相关推荐
垃圾收集器采用计数法或标记法来查找需要清除的对象。计数法由于无法检测循环引用的对象,现在已经很少采用了。...例如在向操作系统申请新内存空间的时候,发生异常的时候等等,因此内存并不是实时回收的。
Adobe官方的Flex垃圾回收机制说明,理解了这个文档,将真正理解ActionScript的垃圾回收机制,编写高性能的Flex程序
NULL 博文链接:https://412599526-qq-com.iteye.com/blog/1284457
Flex 中可能导致内存泄露的地方 事件监听,清除引用....
Flex 应用内存泄露的分析与诊断 Flex 应用内存泄露的分析与诊断
一个跟踪过程,它传递性地跟踪指向当前使用的对象的所有指针,以便找到可以引用的所有对象,然后重新使用在此跟踪过程中未找到的任何堆内存...公共语言运行库垃圾回收器还压缩使用中的内存,以缩小堆所需要的工作空间。
Flex内存泄露问题Flex内存泄露问题Flex内存泄露问题
Flex应用内存泄露的分析与诊断 FlashPlayer 虚拟机的垃圾回收机制 Flex 内存泄露的原因
FLEX内存释放优化原则,内存泄露解决方法,内存泄露情况
有关flex 内存泄漏memory leak介绍的ppt. flash player的内存泄漏实在搞的我头大了
Flex虚拟机内存管理机制及防止内存泄漏 电子书,供参考
Flash Player垃圾回收工作是由垃圾回收器(garbage collector)完成的。垃圾回收器是 运行在后台的一个进程,它释放那些不再被应用所使用对象所占用的内存。不再被应用所 使用的对象是指那些不再会被那些活动着...
文件描述了flex内存管理机制,Flex的垃圾回收机理及如何预防内存泄露
flex内存管理机制 垃圾回收 弱引用 FLEX内存释放优化原则 1. 被删除对象在外部的所有引用一定要被删除干净才能被系统当成垃圾回收处理掉; 2. 父对象内部的子对象被外部其他对象引用了,会导致此子对象不会被删除,...
01-Flash&flex应用内存泄露的分析与诊断.doc
用于防止FLEX编程过程中出现内存无法释放,导致黑屏模糊等现象!
Flex 内存 技巧 整理
NULL 博文链接:https://hje.iteye.com/blog/401843
关于flex的教程,目前flex教材比较少,教材更是更少了
关于Flex的入门基础资料,详细介绍了Flex的开发,是一部难得的Flex教程