有一个Flash应用程序在运行时使用了数百MB的内存。是否有可能以某种方式手动清除此内存?
例如注入一些
System.gc()
整个libflashplayer.so
?
答案 0 :(得分:0)
不在调试模式之外。如果您在垃圾收集方面遇到严重问题,请查看此处的主题以及该主题中链接的文章:
答案 1 :(得分:0)
GC已经定期运行,因此如果GC没有为您释放内存,那么您的Flash应用程序出了问题。
如果一个对象即使不再需要也不会得到GC,你应该手动检查代码,以便该对象释放所有的事件监听器。也许您忘记删除TimerEvent.TIMER
侦听器或其他任何其他侦听器。如果您打算不再使用该实例,请确保正确取消引用所有对象。这包括从您仍需要的父项显示列表中删除不再需要的对象(但不包括清空该对象的显示列表,就好像它将被取消引用一样,其显示列表将不再计为有效嵌套对象的链接,以便它们也可以被收集),并在添加此对象及其所有内容时删除所有未将useWeakReference
标志设置为true的侦听器(该监听器是不被弱引用计为有效链接)。基本上,您应始终完全控制哪个侦听器附加到哪个对象,以及何时添加或删除侦听器。