actionscript 3.0如何清除RAM

时间:2013-05-09 13:55:21

标签: memory actionscript ram

我正在使用actionscript p2p应用程序在对等体之间传输文件。 所有接收到的文件byteArrays都存储在一个数组中,如下所示:

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

现在我陷入了这种情况 - 如果有人决定传输大小超过1GB的文件会怎样。这意味着接收器内存将被堵塞。

如何在用户将其保存在PC上后删除保存的文件byteArray?

我想到了这个:

recvFiles[peerID][fileID] = null;

但我是动作中的新手,我不知道它是如何与记忆相互作用的......

所以我的问题是清除记忆的最佳方法是什么?

谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

是的,应该这样做。您也可以尝试立即强制垃圾收集,尽管它没有得到官方支持。您可以通过创建LocalConnection来完成此操作。 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.

如果您正在使用Flash Player 10或更高版本的调试版进行测试,您也可以强制它:

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

System.gc();

...但请记住,第二个选项仅适用于调试版本。大多数用户都没有安装此功能。