?Eventlisteners:事件侦听的响应函数所在对象默认会被添加引用计数,有以下两种方式可以避免事件侦听引起的内存泄漏o采用弱引用添加事件侦听((,,false,0,true);),采用这种方式侦听响应函数对象不会被添加引用计数,若外部引用都被清空则对象将被垃圾回收,不再响应事件。o若采用强引用,则要要在不需要的时候手动调用removeEventListeneror移除事件侦听器。Cleanupreferences:如果objA有成员ob引用了objB,则直接设置objB=null将不会导致objB实例被垃圾回收,=null之后才会将其回收。也就是说,一个对象的所有引用都被清理之后,其才会被垃圾回收(在AS中只要一个对象没有引用能追溯至根节点,即stage、static成员等,则会被垃圾回收)。不注意清理引用是引起内存泄漏的一个常见问题。a:obj=newobj();b:obj=newobj();=b;=a;=null;=null;a=null;b=null;classLoader{load(onFin:Function):void{thisptr=this;(function(){onFin(thisptr);});}}{lder=newLoader();(function(l:Loader):void{;});}classA{spr:Sprite;functionA(){spr=newSprite();(xxx,onXXX,fal,0,true);}functiononXXX(evt:Event):void{}functiondispose():void{(xxx,onXXX);spr=null;}}{vara:A=newA();();a=null;}{varlder:A=newA();(xx);}?Reuseobjects:对于需要频繁创建销毁的一些较复杂的对象,可以创建objectpool来管理,当对象不需要使用时,可以用objectpool回收对象,同时在对象上定义reset()函数初始化对象,需要使用对象时则从objectpool取出对象并调用reset即可。?Immediatelykillobjects:一些对象,比如XML、()、()直接释放其持有的内存。?Knowthelanguage:需要进一步了解一些Flash的底层机制。比如DisplayObject设置cacheAsBitmap=true;实际上是在底层创建了一bitmap对象,。.?Bewareloops:要小心循环的使用,对于可以放在循环外的新建对象、.://cre
关于as3控制内存增长的几个基础原则 来自淘豆网www.taodocs.com转载请标明出处.