论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

ActionScript 3.0中的垃圾回收

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:40:26


众所周知,在as3的flash运行器中新增了垃圾回收的机制,即自动从内存中清除一些不可访问的对象。这个过程我们是无法控制的,不过可以通过一个例子来观察这个过程:

  1. package
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.text.TextField;
  5.     import flash.utils.Timer;
  6.     import flash.events.Event;
  7.     import flash.events.TimerEvent;
  8.     import flash.system.System;
  9.     public class GarbageCollection extends Sprite
  10.     {
  11.         public function GarbageCollection()
  12.         {
  13.             var s:Sprite = new Sprite;
  14.             s.graphics.beginFill(0, 1);
  15.             s.graphics.drawRect(0, 0, 100, 100);
  16.             //addChild(s);
  17.             s.addEventListener(Event.ENTER_FRAME, enterframelistener);
  18.             var timer:Timer = new Timer(1);
  19.             timer.addEventListener(TimerEvent.TIMER, timelistener);
  20.             timer.start();
  21.         }
  22.         private function timelistener(e:TimerEvent):void
  23.         {
  24.             new TextField();
  25.         }
  26.         private function enterframelistener(e:Event):void
  27.         {
  28.             trace('Flash Player当前所用内存(字节):', System.totalMemory);
  29.         }
  30.     }
  31. }

当输出窗口停止输出信息时就意味着在构造方法中创建的局部变量s被当成垃圾给回收了。

如果将addChild(s)取消注释,s就会被放到场景中,从而不被回收。系统转而回收timelistener里创建的n多没用的new TextField,可以看到:
…省略…
Flash Player当前所用内存: 3403776 字节
Flash Player当前所用内存: 3407872 字节
Flash Player当前所用内存: 3420160 字节
Flash Player当前所用内存: 2142208 字节
Flash Player当前所用内存: 2146304 字节
…省略…
很明显可以看到垃圾回收的过程。

ps: 此例原型是Essential ActionScript 3.0 P277的Example 14-1. Garbage collection demonstration

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058