强制内存回收的两种方法

/以前我们最熟悉的强制内存回收的方法是:

function GC():void{

try{

(new LocalConnection).connect("foo");

(new LocalConnection).connect("foo");}catch(e){

   trace(System.totalMemory);

   }

}

//由于上次试验弱引用的时候,发现当轮询本地sharedobject对象的时候,导致弱引用的内容进行了回收,于是联想用来进行强制内存回收..代码如下:

package {

/**

* @author CYPL

* @date 2009-04-01

*/

import flash.net.SharedObject;

import flash.system.System;

import flash.utils.clearInterval;

import flash.utils.setInterval;

public class GCPlus {

public static function clear(isTraceTM : Boolean = false) : void {

   var time : int = 2;

   var interval : int = setInterval(loop, 50);

   function loop() : void {

    if(!(time--)) {

     isTraceTM && trace(System.totalMemory);

     clearInterval(interval);

     return;

    }

    SharedObject.getLocal("cypl", "/");

   }

}

}

}

 

//----------------------------------------------------------------------------------------------------------------------

 

//测试文档类:[code]

package {

import flash.display.MovieClip;

import flash.display.Sprite;

import flash.events.MouseEvent;

import flash.system.System;

/**

* @author CYPL

*/

public class GC_Test extends Sprite {

private static const NUM : int = 1000;

private var num : int;

public function GC_Test() {

   init();

}

private function init() : void {

   num = NUM;

   stage.addEventListener(MouseEvent.CLICK, clickHandler);

   while (num--) {

    var mc : MovieClip = new MovieClip;

    mc.graphics.beginFill(0);

    mc.graphics.drawRect(0, 0, 100, 100);

    mc.x = Math.random() * 500;

    mc.y = Math.random() * 400;

    addChild(mc);

   }

  

   trace(System.totalMemory);

}

private function clickHandler(e : MouseEvent) : void {

   clear();

}

private function clear() : void {

   while (numChildren) {

    removeChildAt(0);

   }

   GCPlus.clear(true);

}

/*function GC():void{//这是我们熟悉的方法

try{

(new LocalConnection).connect("foo");

(new LocalConnection).connect("foo");}catch(e){

   trace(System.totalMemory);

   }

}*/

}

}

转载于:https://www.cnblogs.com/lisadream/archive/2010/03/05/1679403.html

你可能感兴趣的:(强制内存回收的两种方法)