Flash 修复运行时的闪存泄漏

Flash 修复运行时的闪存泄漏,flash,memory-leaks,garbage-collection,Flash,Memory Leaks,Garbage Collection,有一个Flash应用程序在运行时使用数百MB的内存。是否可以手动清除此内存 例如,注入一些 System.gc() 进入整个libflashplayer。因此?不在调试模式之外。如果您在垃圾收集方面遇到严重问题,请查看此处的线程以及该线程中链接的文章: GC本身已经定期运行,所以如果GC不能为您释放内存,那么您的Flash应用程序就出了问题 如果一个对象即使不再需要也没有得到GC,您应该手动检查代码,以便该对象释放所有事件侦听器。也许您忘了删除TimerEvent.TIMER侦听器,或者其他任

有一个Flash应用程序在运行时使用数百MB的内存。是否可以手动清除此内存

例如,注入一些

System.gc()

进入整个
libflashplayer。因此

不在调试模式之外。如果您在垃圾收集方面遇到严重问题,请查看此处的线程以及该线程中链接的文章:


GC本身已经定期运行,所以如果GC不能为您释放内存,那么您的Flash应用程序就出了问题


如果一个对象即使不再需要也没有得到GC,您应该手动检查代码,以便该对象释放所有事件侦听器。也许您忘了删除
TimerEvent.TIMER
侦听器,或者其他任何侦听器。如果计划不再使用该实例,请确保正确取消引用所有对象。这包括从您仍然需要的父对象的显示列表中删除您不再需要的对象(但不包括清空该对象的显示列表,因为如果该对象将被取消引用,其显示列表将不再作为嵌套对象的有效链接,因此它们也可以被收集),并删除从该对象及其所有内容添加时未将
usewakreference
标志设置为true的所有侦听器(未弱引用的侦听器视为有效链接)。基本上,您应该始终完全控制哪个侦听器连接到哪个对象,以及何时添加或删除侦听器。

如果您的应用程序内存使用没有自行下降(此时不再需要内存)这表明flashplayer根本不是垃圾收集——通常的嫌疑犯不是删除事件侦听器,而是通过探查器运行你的应用程序会告诉你更多信息(例如adobe scout),关键是它不是我的应用程序,我无法访问源。我只是在寻找一些方法,使闪存库清除其在系统中的内存。好的。然后您可以做的不多——运行System.gc()不会有什么帮助——它所做的只是让垃圾收集提前发生。如果你的应用程序还没有自动进行gc,那么调用gc()也不会有任何区别。