对于模糊的标题感到抱歉,但不太确定如何总结这个标题。
事实是:
所以,对于我来说这些特定用户的iPad可能会有什么不同,这是非常神秘的。重启设备后游戏仍然有效,但是一些应用程序运行后游戏(有时)加载有问题。我的理解是,如果我的游戏需要内存,操作系统将根据需要自动关闭正在运行的任何其他应用程序,以有效地将内存量恢复到新重启设备上可用的数量。我唯一的结论是,在运行一些应用程序后,设备处于可用内存较少的状态,因为操作系统无法回收某些内存块或关闭某些应用程序。
不幸的是,我没有开发这些“行为不端”的设备之一。我所能想到的就是尝试将我的应用程序的内存需求减少一定量,然后将其发送给遇到问题的其中一个用户,看看它是否修复了问题。然而,这似乎是一种潜在的低效率方法。
有人有更好的主意吗?
答案 0 :(得分:2)
听起来像纹理加载期间的内存峰值是导致应用程序在某些设备上终止的原因。在加载所有内容之后,它可能会使用比在初始加载结束时更少的内存。这可以通过推送到虚拟内存的东西来解释,而直接纹理加载可能会以过多的分配轰炸RAM。我的建议是:
release
一个临时结构,其所有有用的值都被其他东西读取/提取出来)autorelease
d个对象,请始终保持NSAutoreleasePool
左右;如果使用极为多的drain
d个对象,您甚至可能希望在一个方法的过程中多次alloc
并重新autorelease
一个池。编辑:实现较慢加载的一种可能策略:如果/当您收到低内存警告,暂停或缓慢加载几秒钟以给其他应用程序时间来降低内存使用量,然后继续以正常速度加载。
即使我错了(如果LowMemory...log
文件显示虚拟+物理使用情况,因此您的应用甚至没有那么多),我建议然后整合错误报告,例如QuincyKit
所以当你在野外遇到这个bug时,你会通过电子邮件收到回溯和崩溃说明。