我已经在Adobe Flex应用程序上工作了几个月,该应用程序意味着连续几天(周数!)全天候运行。但是,我现在看到,在运行不间断运行几天后,运行它的计算机告诉我系统虚拟内存不足并且给我一个关于页面文件使用的错误。关闭Flex应用程序后,页面文件使用率从1.9 GB降至100 MB(或更低)。它似乎耗尽了所有这些内存并且没有释放它,尽管我在我的应用程序中一直非常小心,不能保留大量阵列。
应用程序做了一些绘图并绘制了很多形状(以增加'规格'),然后通过将该对象重新声明为另一个“规格”来摆脱它们。
知道为什么我的页面文件使用率如此之高?!
答案 0 :(得分:2)
您很可能拥有未被删除的eventListener。他们保留对对象的引用并防止它们被垃圾收集。
答案 1 :(得分:2)
您可以使用Flex Builder professional中的探查器查看内存使用情况。就像提到的另一张海报一样,事件监听器很多时候都是这种情况下的罪魁祸首,但更一般地说,只是因为你认为你正在摆脱(摧毁或删除)一个变量,并不意味着它真的得到了照顾由垃圾收集器。如果该变量(或对象)仍然存在任何引用(如事件侦听器),则不会收集它。探查者会指出这些事情。
答案 2 :(得分:0)
我听说有传言说在舞台上放任何东西都会造成内存泄漏。换句话说,你可以尽可能小心你的代码,但你仍然会泄漏内存。据我所知,Adobe尚未对此进行验证。一个好的测试可能是实例化一个Shape,一个Sprite和一个MovieClip,将它们添加到显示列表中,然后让应用程序在一夜之间运行。如果您最终测试结果,我们很乐意听到结果。