0

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

例如注入一些

System.gc()

成整体libflashplayer.so

4

2 回答 2

0

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

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

于 2013-03-28T05:23:57.857 回答
0

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

为什么 AS3 垃圾收集器不捡起这个?

于 2013-03-26T13:10:36.853 回答