2013-05-09 61 views
0

我使用actionscript p2p應用程序在對等設備之間傳輸文件。 所有接收到的文件的ByteArray被存儲在一個陣列像這樣的:actionscript 3.0如何清除內存

recvFiles[peerID][fileID].data:ByteArray = FileReference.data 

現在我被困在這樣的情況 - 如果有人決定用大小大於1GB的文件傳輸。這意味着接收器內存將被堵塞。

如何刪除保存的文件byteArray用戶保存在PC後?

我想到這個問題:

recvFiles[peerID][fileID] = null; 

,但我在ActionScript新手,我不如何與記憶interracts ...

所以我的問題是什麼是最好的方式清除記憶?

感謝您的幫助!

回答

1

是的,應該這樣做。您也可以嘗試立即強制垃圾收集,儘管它沒有官方支持。你可以通過建立一個LocalConnection來做到這一點。還有更多關於它在這裏格蘭特Skinner的博客:

http://gskinner.com/blog/archives/2006/08/as3_resource_ma_2.html

try { 
    new LocalConnection().connect('foo'); 
    new LocalConnection().connect('foo'); 
} catch (e:*) {} 
// the GC will perform a full mark/sweep on the second call. 

如果您正在使用Flash的調試版本Player 10或更高的測試,你也可以強制:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/System.html#gc()

System.gc(); 

...但請記住,第二個選項僅適用於調試版本。大多數用戶不會安裝它。