2011-11-12 63 views
0

如何首先定義一個類:AS3內存管理

class C1 extends Sprite 
{ 
     public function C1() { super(); } 
} 

然後寫在文檔類下面的代碼:

setInterval(function(a:Sprite):void { 
    a.addChild(new C1()); 
}, 10, this); 

setInterval(function(a:Sprite):void { 
    a.removeChildAt(0); 
}, 11, this); 

然後運行它,並檢查內存ustage,它會得到越來越多的更大...

如何從根中刪除孩子時釋放內存?

回答

2

Flash VM使用garbage collection釋放內存。 GC將在任意時間由玩家執行,除非您明確呼叫System.gc(),但此方法僅在AIR和調試器版本的Flash Player中可用。因此,即使您已經釋放了程序中的資源,直到執行GC進程,內存使用率仍可能繼續增加。

此外,請注意,addChild()removeChild()僅添加項目並將其從顯示列表中刪除。要真正釋放資源,必須明確地將在程序中保留的所有引用設置爲null

+0

如果我在沒有任何引用的容器中添加一個DisplayObject(就像上面的:this.addChild(new Sprite())),然後將其刪除。它真的釋放了資源嗎?謝謝。 –

+0

如果確實沒有其他參考,是的。看看這個其他帖子:http://stackoverflow.com/questions/7271726/garbage-collection-question-display-list-actionscript – weltraumpirat