我一直在处理一个库,并且遇到了应用程序内存方面的问题。
我创建了一个名为FileManager的类,它允许用户调用一个名为loadNewFiles的函数,这个函数打开一个多文件选择对话框,并将每个FileReferenceList存储在一个向量中。我可以随时调用removeList函数并删除该列表,并清除分配给该列表的任何内存和侦听器,所以一切都很好。
我创建了另一个名为UploadManager的类,它接受一个FileReference对象数组,并通过uploadFiles函数将它们上传到URL中。内存泄漏似乎就在这里。调用此函数时,它将添加适当的事件侦听器并调用上载函数。如果上传失败或上载完成,它将删除侦听器并清除它一直在等待的向量。
在上传管理器完成文件上传之后,我在FileManager中调用了FileManager函数(记住,该函数以前工作得很好),并且.什么都没发生。文件从两个向量中删除,侦听器从两个文件中删除,但内存保持分配。这显然有可能造成问题的道路上,因为没有限制的数量的文件,上传等可通过库。
课程:
实现
发布于 2013-02-05 03:49:58
从你的例子听起来,UploadManager仍然有一个对文件的引用,要么是从传递到uploadFiles的向量,要么是游戏中的其他对象仍然有一个引用。
还请注意,System.gc()只适用于flash播放器的调试版本。
所以你不能依靠它进行建筑设计的选择。当您需要看到“按需”消耗ActionScript内存时,它适用于单元测试内存密集型操作。
在生产产品中,ActionScript虚拟机非常活跃地检测垃圾收集的时间和地点。大多数人会说,当你不想让它发生的时候,它就会发生。
尝试分析应用程序并查看有关对象(即FileReference)的“累积实例”与“实例”以及“累积内存”和“内存”。
您可以在运行时强制配置文件视图中的垃圾收集,以了解在发布版本中发生垃圾收集时实际释放了多少内存。
https://stackoverflow.com/questions/13811428
复制相似问题