美好的一天,
我正在AIR for Android中开发冒险游戏。我正在从库(影片剪辑)实例化级别,每个级别至少包含一个HD分辨率位图。
当游戏启动时,它占用大约150MB的内存,包括AIR运行时和SWF。在这150MB中,SWF目前约为12MB。
随着游戏的进行,AIR运行时的内存消耗增加,而SWF使用的内存保持在15-20MB左右。当总内存消耗达到大约350(!)MB时,操作系统会干预并杀死应用程序。
我小心翼翼地尽可能地重用对象,并使任何未使用的对象无效以使它们符合GC的条件。 GC似乎应该正常工作,因为SWF使用的内存保持稳定在15-20MB左右。当GC开始时,我可以看到它从20到12不时下降。
我尝试过的事情:
所有失败,内存消耗都会消失。
仅在Android上发生这种情况。在PC上一切都很好,整个过程大约需要250-300MB,这个数字保持稳定,无论我一个接一个地加载多少级别。还没有机会在iOS上测试。
我真的很感激任何关于如何解决这个问题的想法或见解。
感谢。
答案 0 :(得分:0)
1)查找内存泄漏的最简单方法是使用Adobe Flash Builder。只需运行分析。
2)将来排除泄漏的好方法:创建将用于“清理”的功能。例如。它将使实例的所有局部变量都为空,依此类推。像通常的c ++析构函数。然后,在使对象归零之前,只需调用此方法。