2013-05-09 5 views
0

Я использую приложение p2p actionscript для передачи файлов между одноранговыми узлами. все полученные файлы ByteArray, которые хранятся в одном массиве, как это:actionscript 3.0 как очистить RAM

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

теперь я застрял в такой ситуации - то, что если кто-то решил перенести файлы с размером более 1 Гб. это означает, что память приемника будет забита.

Как я могу удалить сохраненный файл byteArray после того, как пользователь сохранил его на ПК?

я думал об этом:

recvFiles[peerID][fileID] = null; 

, но я новичок в ActionScript, и я не знаю, как это interracts с памятью ...

поэтому мой вопрос, что это лучший способ очистить память?

благодарит за помощь!

ответ

1

Да, это должно быть сделано. Вы также можете попытаться принудительно собрать мусорную сборку, хотя она официально не поддерживается. Вы можете сделать это, создав LocalConnection. Существует больше об этом здесь на блоге Гранта Скиннера:

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(); 

... но имейте в виду, что этот второй вариант предназначен только для отладочной версии. Большинство пользователей не будут установлены.