下载此文档

AS垃圾回收.doc


文档分类:研究报告 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
AS 垃圾回收一、 Flash Player 垃圾回收机制: Flash Player 垃圾回收工作是由垃圾回收器( garbage collector ) 完成的。垃圾回收器是运行在后台的一个进程, 它释放那些不再被应用所使用对象所占用的内存。不再被应用所使用的对象是指那些不再会被那些活动着(工作着)的对象所“引用”的对象。在 AS 中,对于非基本类型( Boolean, String, Number, uint, int )的对象,在对象之间传递的都是对象引用, 而不是对象本身。删除一个变量只是删除了对象的引用, 而不是删除对象本身。一个对象可以被多处引用, 通过这些不同的引用所操作的都是同一个对象。通过以下两段代码可以了解基本类型和非基本类型对象的差异: 基本类型的值传递: private function testPrimitiveTypes():void { var s1:String="abcd"; // 创建了一个新字符串 s1 ,值为"abcd" var s2:String=s1; //String 是基本类型,所以创建了一个新的字符串 s2, s2 的值拷贝自 s1。 s2+="efg"; // 改变 s2 的值 s1 不会受影响。 trace("s1:",s1); // 输出 abcd trace("s2:",s2); // 输出 abcdefg var n1:Number=100; // 创建一个新的 number, 值为 100 。 var n2:Number=n1; //Number 是基本类型, 所以又创建一个新 number n2,n2 的值拷贝自 n1。 n2=n2+100; // 改变 n2对 n1 不会有任何影响。 trace("n1",n1); // 输出 100 trace("n2",n2); // 输出 200 } 非基本类型对象的引用传递: private function testNonPrimitiveType():void { // 创建一个新对象, 然后将其引用给变量a : var a:Object = {foo:"bar"} // 将上面所创建对象的引用拷贝给变量b ( 通过变量b建立对对象的引用) : var b:Object = a; // 删除变量 a 中对对象的引用: delete(a); // 测试发现对象仍然存在并且被变量 b 所引用: trace(); // 输出"bar", 所以对象仍然存在} 对于非基本类型对象, AS3 采用两种方法来判定一个对象是否还有活动的引用, 从而决定是否可以将其垃圾回收。一种方法是引用计数法, 一种方法是标记清除法。 Reference Counting 引用计数法是判定对象是否有活动引用的最简单的一种方法, 并且从 AS1 就开始在 Flash 中使用。当创建一个对对象的引用后, 对象的引用计数就加一, 当删除一个引用时, 对象的引用技术就减一。如果对象的引用计数为0,那么它被标记为可被 GC( 垃圾回收器) 删除。例如: var a:Object = {foo:"bar"} // 现在对象的引用计数为1 (a) var b:Object = a; // 现在对象的引用计数为 2(a 和b ) delete(a); // 对象的引用计数又回

AS垃圾回收 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-03-20
最近更新