书接上文,上文是很早的一篇文章了!不知道大家还记不记得!标题叫做“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 中文乱码问题 在 AS3 中读取 ANSI 文本时,经常会出现...解决 AS3 中中文乱码问题需要了解 AS3 的编码方式和字符集的使用方法。通过正确地使用编码方式和字符集,我们可以成功地读取 ANSI 文本中的中文字符。
总结起来,AS3中的对象缓存池是通过预先创建和管理对象来优化性能的一种策略。结合工厂方法,我们可以实现更加灵活且高效的对象创建过程。理解并熟练运用这些概念,对于提升AS3应用的性能和可维护性有着重要意义。在...
在AS3中,通常通过import语句引入库中的类,例如: ```actionscript import com.as3xls.*; ``` 在导入库之后,你可以创建一个`Workbook`对象来表示Excel工作簿,并使用`Worksheet`对象代表工作表。以下是一个简单...
1. **基础类型**:AS3中有基本的数据类型,如Number(包括整数和浮点数)、String、Boolean、null和undefined,以及Object和Array。其中,Number类型比AS2更加严格,不再自动转换数字字符串。 2. **面向对象编程**...
首先,让我们来深入了解一下AS3中的类继承。在面向对象编程中,类继承是一种机制,允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和方法。AS3的类继承树展示了所有内置类之间的层次结构,包括...
本文主要讨论AS3中的内存优化和垃圾回收机制,这对于开发高性能的Flash应用至关重要。 首先,AS3内存优化的一个关键点是选择合适的显示对象。对于简单的非交互图形,推荐使用Shape对象,因为它的内存占用最小(236...
4. **函数与方法**:AS3中的函数是可重用的代码块,而方法是对象的一部分。文档将详细介绍它们的定义、参数、返回值以及作用域。 5. **显示列表和图形绘制**:AS3允许开发者通过DisplayObject类及其子类(如Sprite...
解决办法是确保在适当的时候取消网络请求,或者在Activity的onDestroy()方法中解除对Call对象的引用。 总之,Android开发者应熟练掌握内存分析工具,遵循良好的编程习惯,预防内存泄漏,以提高应用的性能和稳定性。...
由于Flex运行在Flash Player环境中,所以它不能直接读写文件系统,但`as3xls`通过在内存中构建Excel文件的数据结构,然后转换为二进制流,最后通过HTTP服务提供下载,从而绕过了这个限制。 在处理中文字符时,我们...
本篇文章将详细讲解如何在AS3中使用UDP(用户数据报协议)进行测试,以及相关的知识点。 标题“as3-udp test”暗示了这是一个AS3环境下的UDP通信测试工具。UDP是一种无连接的、不可靠的传输层协议,它不保证数据包...
在AS3中,每个类都对应一个AS文件,例如`Tool.as`可能包含了名为`Tool`的类。这样的设计使得我们可以将不同功能的代码分别放在不同的文件中,便于管理和协作。 要调用外部AS脚本,你需要首先创建或导入外部类。例如...
2. **MP3解码**:在AS3中播放MP3文件,需要使用Flash Player提供的内置音频解码功能。Flash Player能够直接处理MP3格式的音频数据,无需额外的解码库。AS3通过Sound类来处理音频,包括加载、播放、控制音量等操作。 ...
在AS3中,内存优化和垃圾回收策略对性能有着显著影响,特别是在处理大量数据或者运行长时间的程序时。 1. **显示对象的选择**: - Shape对象适用于非交互的简单图形,因其内存占用最少(236字节)。 - Sprite适合...
下面将详细介绍AS3中的EVENT以及相关知识点。 1. **事件(Event)**: 在AS3中,事件是对象状态改变的信号,例如按钮被点击、视频播放完成或网络数据加载完毕。事件由事件对象表示,包含有关发生情况的信息。事件类...
通过上述方法,可以有效地解决在使用Maven构建过程中遇到的内存溢出问题。合理地调整内存限制不仅可以提高构建效率,还能避免不必要的错误和中断。希望本文能帮助开发者们更好地管理和优化自己的构建流程。
在Adobe Flash Professional的开发环境中,ActionScript 3(AS3)是核心编程语言,它为创建交互式内容、动态图形和丰富的互联网应用程序提供了强大的支持。AS3的API(Application Programming Interface)是开发者...
在AS3中,每一次创建新对象都会占用内存,如果不定期释放无用对象,就可能引起内存溢出。因此,通过检测舞台中的子对象数量,并在添加新对象之前清除旧对象,可以有效减少内存占用。 接着,通过比较不同实例创建...
位图数据在AS3中是内存消耗的主要来源之一,特别是在处理大量图片或复杂的图形时。位图数据会被缓存在GPU内存中,当内存达到饱和,系统可能需要将部分数据回滚到CPU内存,这会导致显著的性能降低。博主进行的实测...
总的来说,解决AS3.0中搜狗输入法卡顿的问题需要从多方面考虑,包括但不限于软件版本、兼容性、系统权限、代码优化以及日志分析。通过逐一排查和尝试,通常能够找到问题所在并解决。如果以上方法均无效,可能需要...
3. **事件处理**:AS3中的事件模型是其强大之处,通过addEventListener和dispatchEvent等方法可以实现丰富的用户交互。学会如何正确处理和响应事件是制作动态UI和游戏的重要技能。 4. **显示对象和舞台**:AS3中的...