0

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

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

现在我陷入了这样的境地——如果有人决定传输大于 1gb 的文件怎么办。这意味着接收器内存将被阻塞。

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

我想过这个:

recvFiles[peerID][fileID] = null;

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

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

谢谢你的帮助!

4

1 回答 1

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

...但请记住,第二个选项仅适用于调试版本。大多数用户不会安装这个。

于 2013-05-13T14:52:06.787 回答