我正在使用actionscript p2p应用程序在对等体之间传输文件。 所有接收到的文件byteArrays都存储在一个数组中,如下所示:
recvFiles[peerID][fileID].data:ByteArray = FileReference.data
现在我陷入了这种情况 - 如果有人决定传输大小超过1GB的文件会怎样。这意味着接收器内存将被堵塞。
如何在用户将其保存在PC上后删除保存的文件byteArray?
我想到了这个:recvFiles[peerID][fileID] = null;
但我是动作中的新手,我不知道它是如何与记忆相互作用的......
所以我的问题是清除记忆的最佳方法是什么?
谢谢你的帮助!
答案 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();
...但请记住,第二个选项仅适用于调试版本。大多数用户都没有安装此功能。