簡體   English   中英

Flex 4:垃圾收集不起作用

[英]Flex 4: Garbage Collection doesn't work

我有一個正在通過PopUpManager.addPopUp()顯示的TitleWindow組件。 關閉組件時,我正在調用closePopUp事件,該事件將對象的變量設置為null,如下所示:

// application
private var myObject:MyObject;

private function openPopUp():void
{
    myObject = new MyObject();
    myObject.addEventListener('closePopUp', closePopUp);
    PopUpManager.addPopUp(myObject, this, true);
}

private function closePopUp(e:Event):void
{
    myObject = null;
}

但是,在調試模式下,我可以看到myObject設置為null,但是內存使用量並未減少。 當我再次打開該組件時,內存使用情況與以前相同。

我曾想過,當myObject變量設置為null時,GC會回收對象並釋放內存。 知道為什么不這樣嗎?

嘗試刪除事件偵聽器,我認為將其掛在那會阻止GC收集您的對象。

Flash Player中的垃圾回收並不是一門精確的科學,它的工作方式與大多數人期望的有點不同……總而言之,它僅在需要更多內存時才釋放內存。 這些文章更詳細地解釋了它:

http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html http://www.gskinner.com/blog/archives/2006/06/as3_resource_ma.html http://blogs.adobe.com/ aharui / 2007/03 / garbage_collection_and_memory.html

而且,正如Dein所說,事件偵聽器是Flash中內存泄漏的最常見原因。 您必須非常小心,並始終嘗試將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM