2013-05-09 6 views
0

J'utilise l'application actionscript p2p pour transférer des fichiers entre pairs. tous les fichiers reçus ByteArrays sont stockés dans un tableau comme celui-ci:actionscript 3.0 comment effacer RAM

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

maintenant je suis coincé dans une telle situation - si quelqu'un a décidé de transférer des fichiers d'une taille supérieure à 1Go. cela signifie que la mémoire du récepteur va être bouchée. Comment puis-je supprimer le fichier enregistré byteArray après que l'utilisateur l'a enregistré sur le PC?

Je pensais à ce sujet:

recvFiles[peerID][fileID] = null; 

mais je suis un débutant dans actionscript et je ne sais pas comment il interracts avec mémoire ...

donc ma question est quelle est la meilleure façon pour effacer la mémoire?

merci pour votre aide!

Répondre

1

Oui, cela devrait le faire. Vous pouvez également essayer de forcer le ramassage des ordures immédiatement, bien qu'il ne soit pas officiellement pris en charge. Vous pouvez le faire en faisant un LocalConnection. Il y a plus ici sur le blog de Grant 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. 

Si vous testez en utilisant la version de débogage de Flash Player 10 ou plus, vous pouvez également forcer:

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

System.gc(); 

... mais gardez à l'esprit que cette 2ème option est seulement pour la version de débogage. La plupart des utilisateurs ne l'auront pas installé.