修复运行时期间的闪存泄漏问题

时间:2013-03-26 11:14:14

标签: flash memory-leaks garbage-collection

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

例如注入一些

System.gc()

整个libflashplayer.so

2 个答案:

答案 0 :(得分:0)

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

Why isn't the AS3 garbage collector picking this up?

答案 1 :(得分:0)

GC已经定期运行,因此如果GC没有为您释放内存,那么您的Flash应用程序出了问题。

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