您如何知道编译的SWF文件是否有内存泄漏?
是否有工具,萤火虫设置等......以确定是否存在问题?除了文件大小和加载时间之外,我在调试Flash播放器中找不到多少。
我有一个庞大的Flash应用程序,我维护并怀疑使用太多内存,所以我想测量执行时使用的RAM量,以找到要优化的关键区域。
非常感谢任何帮助。
答案 0 :(得分:5)
我建议您也查看Flex Builder探查器。如果将代码划分为模块,加载它,与之交互,然后卸载它,您可以轻松地查看模块中是否还有内存中的类。通常这是由于没有使用弱引用的事件侦听器(addEventListener方法中的第5个参数)。
此外,这篇博客文章和关于Flash Player内存管理的相关演示文稿值得一读:
http://blogs.adobe.com/aharui/2007/03/garbage_collection_and_memory.html
答案 1 :(得分:4)
您可以做的就是检查应用程序启动时的内存使用情况,以及更改后的内存使用情况。
要获取当前正在使用的内存量,您可以执行以下操作:
var initial_memory:Number = Number(System.totalMemory/1024).toFixed(2));
在应用程序的最开始执行此操作(即,当所有内容都已完成加载时)
然后,启动一个Timer并使用TimerEvent.TIMER处理程序或添加一个Event.ENTER_FRAME事件监听器并执行以下操作:
var current_memory:Number = Number(System.totalMemory/1024).toFixed(2));
现在您拥有initial_memory用法以及current_memory用法。您如何选择使用这些取决于您自己。您可以从current_memory中减去initial_memory以获取delta。您可以在舞台上的文本字段中显示它们,将它们写入FireBug的控制台,或在输出窗口中跟踪它们。
然后点击左右。如果你做了一些可以增加内存的东西,那就没关系。但是,如果你有一些应该被卸载的东西,那么你就有了泄漏。
答案 2 :(得分:2)
Jun Hinder在09年的360 | Flex演示文稿中介绍了Profiler的基础知识......或许那是'08 ......无论如何,我建议调查Profiler基础知识。