在某些加载情况下,我正在制作一个有一些障碍(冻结一点)的游戏。
如果我启动手机或删除/重新安装游戏,则会出现故障。如果我杀了应用程序并重新打开,那么故障就会消失,这让我相信它们会在游戏资产被加载到RAM中时发生。当我杀死应用程序时,内存变为非活动状态,但如果我重新打开游戏,它仍然可以快速加载。
我需要一种方法来清理RAM,这样我就可以快速重现故障,也就是说,比重新启动手机或重新安装应用程序更快。
我试图做trick involving holding the wake button then home button但显然只会杀死所有应用并且不会删除内存。
我还尝试使用this project使用malloc
和memset
来清理内存,直到它崩溃(分配并擦除更多内存直到它崩溃),但它不会清理我关闭的游戏使用的记忆。我的印象是iOS从我的游戏之前使用的应用程序中释放非活动内存,因此内存分配应用程序永远不会有机会使用我的游戏的非活动内存,因为它首先被杀死。
因此,我想了解iOS如何选择使用哪种非活动内存,以及如何使我的应用程序从RAM中清除非活动内存。
请注意我在播放时并没有试图找到免费内存的方法,而不是试图让游戏使用更少的内存,我正试图清除游戏中使用的内存 之后游戏关闭,因此在我打开游戏的时候,所有障碍都会发生。
我正在使用iPhone 6,iOS 10.3.2。
答案 0 :(得分:0)
用两个词来形容这一点是不可能的。首先,我建议您查看此article。
如果要手动释放不必要的对象,请查看UIViewController的didReceiveMemoryWarning()方法的说明