和我们一起放飞理想吧!
  • 本栏最新文章
摄影专辑AD
  • 本栏推荐文章
当前位置:应用教程首页 >> FLASH教程 >> 详细内容

ActionScript 3.0垃圾回收

2008-07-03 15:45:54    作者:flashxm    来源:闪无忧    文字大小: |  | 
简介:众所周知,在as3的flash运行器中新增了垃圾回收的机制,即自动从内存中清除一些不可访问的对象。这个过程我们是无法控制的,不过可以通过一个例子来观察这个过程: package { import flash.display.Sprite ...
关键字:ActionScript 3.0

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

package
{
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.Timer;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.system.System;
    public class GarbageCollection extends Sprite
    {
        public function GarbageCollection()
        {
            var s:Sprite = new Sprite;
            s.graphics.beginFill(0, 1);
            s.graphics.drawRect(0, 0, 100, 100);
            //addChild(s);
            s.addEventListener(Event.ENTER_FRAME, enterframelistener);
            var timer:Timer = new Timer(1);
            timer.addEventListener(TimerEvent.TIMER, timelistener);
            timer.start();
        }
        private function timelistener(e:TimerEvent):void
        {
            new TextField();
        }
        private function enterframelistener(e:Event):void
        {
            trace('Flash Player当前所用内存(字节):', System.totalMemory);
        }
    }
}
当输出窗口停止输出信息时就意味着在构造方法中创建的局部变量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

相关文章
绵阳网警