书接上文,上文是很早的一篇文章了!不知道大家还记不记得!标题叫做“AS3中的内存泄露与垃圾回收”。在上一篇文章中,我们详细讨论了AS3的垃圾回收机制!令人沮丧的是,垃圾回收机不是很勤快!很多时候都会拖我们的后退!难道就这么心甘情愿的放任它不管吗!当然不行!我们有对策来解决这个问题。听我慢慢道来!
垃圾回收机制,一共有两种方法:“引用计数法”和“标识清除法”。对与这两种运行机制,我个人来说比较喜欢后一种。因为它简单明了,不会出现任何问题!但是,它会消耗很多CPU,所以就出现了垃圾回收机不定时运行的情况。那么处理方法很简单,我们只需要在需要的时候手动的启动一下垃圾回收机就可以了!那么怎么启动呢?这里就要提flash player的两个版本9.0和10.0.它们的处理方法略有不同!
首先说flash player9.0,在进行内存清理之前,你一定要保证你想清理的内存都不存在引用了!否则的话,下面就白费了!然后我们可以让fp发生一次运行时错误!为什么要这样呢?因为只要fp抛出运行时错误,那么fp就会执行一次垃圾回收机了!好了!知道了这个原理,就好办了!怎么弄呢?网上这段代码已经很多了!我再复制一次吧!
try{
new LocalConnection().connect(”GC”);
new LocalConnection().connect(”GC”);
}catch(error : Error){
}
这样就可以抛出一次运行时错误!垃圾回收机就执行了!达到我们的目的了!
但是,注意!这并非最好的做法。在你的正式项目中千万不要出现这样的语句!它会拖累你的程序的!虽然是一种解决方法,但严重不推荐在正式程序中使用!
下面来说说flash player10.0的做法!貌似ADOBE公司已经对这个问题产生了足够的重视。在fp10中我们已经有了一个非常非常专业的办法!看下面的语句你就明白了!
System.gc();
看到这个语句你会想到什么呢?兴奋吗?在FP10中有了一个专门的静态方法来强制执行垃圾回收进程!这个总比fp9的处理方法好吧!但是它也不是万能的!该方法只在fp10 debug版本和AIR debug版本AIR Debug Launcher (ADL) 中有效,同时在使用之前你也要确保要回收的内存已经不存在任何引用了!否则,你也是白费力气!经过测试,这东西确实令人兴奋!内存回收速度很好!
现在,大部分网民都安装了fp10的网页插件,所以不用担心版本问题,为了确保安全起见,你最好在你的程序初始化的时候检测一下用户的fp版本,如果用户是9的版本,直接让程序连接到adobe flash player的下载页面即可!
关于触发垃圾回收机就先说这么多吧!后面我们再讨论,在程序中,使用一些技巧,方便的管理我们的所有引用!
分享到:
相关推荐
解决AS3读入ANSI文本时显示乱码的问题。
为了方便大家使用我就直接把例子项目给上传, lib文件夹下有包 代码只需改一行就可以(里面有注释,改字符集的) 可以改成你所想要的任何语言(我测试过日语,韩语,中文都没有乱码) 希望对大家有所帮助 ...
AS3中gif类库,ActionScript,gif类库,AS3打印gif AS3中gif类库,ActionScript,gif类库,AS3打印gif
本资源为用于flex导入或导出excel的类库as3xls,现存...2.整理的所有excel的日期格式(包括时间格式)并将它们加进类库as3xls,将原来的用日期型来读取数据改成用时间型读取数据,解决日期所带的时间会被省略掉的问题。
AS3中Matrix类详解AS3中Matrix类详解
AS3类继承树+AS3中文API.整个ActionScript3的类关系图以及ActionScript中文API。是很值得参考的资料。
AS5047P_AS5047p使用方法_as5047p模式_AS5047stm32_磁编码器_as5047p中文_源码.zip
西门子AS控制器内存分配及优化pdf,西门子AS控制器内存分配及优化:本文基于S7-400系列控制器,详细介绍内存的类型、分配情况及实际使用过程中可能的内存优化方法。
说明:这个是用来实现已在场景中的Mc复制多个出来,如AS2中可以duplicateMovieClip,AS3中用是用New和addChild的, 有人会说As3可以用 方法1——反射方法: var ClassRef:Class = getDefinitionByName...
纯as3代码实现对象缓存,对应频繁需要创建和销毁的对象,采用一个缓存队列,保存一定数量的对象,当需要的时候从队列里取出,不再需要的时候交给缓存池。
我找了半天都没有找到AS3的 单个图片,复制成多个循环使用,然后,逐个删除。 现在我贡献下写法,希望可以帮助as3的新人。 源代码可以打开直接看,也可以用fb 导入工程看效果。 导入时,请将swc文件载入下,否则...
flash as3 加载图片 两种方法 代码实例
as3xls-1.0.1.swc包文件直接拷贝到libs目录即可使用,相关代码也附上。
Flash AS3中文API.我把Flash CS3的本地文档剥离出来了。方便用FD开发的朋友们使用。
实用as3滚动条,flash常用滚动条源码
as3 3D螺旋相册 as3 3D螺旋相册 as3 3D螺旋相册
来自《潮汕IT男》网站的文章《解决flash/flex/as3 访问中文域名时的流错误》代码示例,地址:http://chenlinsheng.com/?p=990
AS3内存优化及垃圾回收.pdf
Flash as3调用外部AS脚本 很小的示例
开源as3基础类库as3isolib as3isolib is a great isometric library for actionscript 3 by Justin Opitz. This is a lower level isometric library that could be used in