AS3内存泄漏

时间:2012-12-10 23:58:21

标签: actionscript-3 actionscript

我一直在使用库,并且遇到了应用程序内存问题。

我创建了一个名为 FileManager 的类,它允许用户调用一个名为loadNewFiles的函数 - 该函数打开一个多文件选择对话框并存储每个 FileReferenceList 在向量中。我可以随时调用removeList函数并删除该列表并清除分配给该列表的所有内存和监听器,所以一切都很好。

我创建了另一个名为 UploadManager 的类,它接受一组 FileReference 对象,并通过uploadFiles函数将它们上传到URL。内存泄漏似乎在这里。当您调用此函数时,它会添加相应的事件侦听器并调用上载函数。如果上传失败或上传完成,它将删除侦听器并清除它一直在等待的向量。

上传管理员完成上传文件后,我在 FileManager 中调用removeFiles函数(记住,之前工作完美)并且......没有任何反应。从两个向量中删除文件,从两个文件中删除侦听器,但内存保持分配状态。这显然有可能引发问题,因为通过图书馆提供的文件,上传等数量没有限制。

类:
FileManager
UploadManager

Implementation

1 个答案:

答案 0 :(得分:0)

从你的例子中可以看出,UploadManager仍然可以从传递给uploadFiles的向量中引用文件,或者游戏中的其他一些对象仍然有引用。

另请注意,System.gc()仅适用于Flash播放器的调试版本。

因此,您不能依赖它来进行建筑设计选择。当您需要“按需”查看ActionScript内存的消耗时,它适用于单元测试内存密集型操作。

在生产产品中,ActionScript虚拟机非常活跃,可以检测垃圾收集的时间和位置。大多数人会说,当你不想要它时,它就会发生。

尝试分析应用程序并查看“累积实例”与“实例”,以及相关对象的“累积内存”与“内存”(即FileReference)。

您可以在“配置文件视图”中的运行时强制进行垃圾回收,以便在发布版本中进行垃圾收集时,实际了解实际释放的内存量。