gpt4 book ai didi

actionscript-3 - AS3内存泄漏

转载 作者:行者123 更新时间:2023-12-04 04:33:43 25 4
gpt4 key购买 nike

我一直在开发一个库,但遇到了应用程序内存问题。

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

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

在上传管理器完成上传文件后,我调用了 FileManager 中的 removeFiles 函数(请记住,它之前工作得很好)并且...没有任何反应。文件从两个向量中删除,监听器从两个文件中删除,但内存保持分配状态。这显然有可能导致问题的发生,因为对于通过库可用的文件、上传等的数量没有限制。

类(class):
FileManager
UploadManager

Implementation

最佳答案

从您的示例来看,UploadManager 仍然具有对传递到 uploadFiles 的向量中的文件的引用,或者游戏中的某些其他对象仍然具有引用。

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

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

在生产产品中,ActionScript 虚拟机非常积极地检测何时何地进行垃圾收集。大多数人会说它会在您不希望它发生的时候发生。

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

您可以在 Profile View 中在运行时强制进行垃圾收集,以实际了解在发布版本中进行垃圾收集时实际释放了多少内存。

关于actionscript-3 - AS3内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13811428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com