iOS内存管理 – 其他进程RAM增加
我有一个应用程序,它使用一些内部有SKScenes
UIViewControllers
,一些大图像和声音的ObjectAL 。
在推出一些带有SKScenes
视图控制器SKScenes
(是的,我知道这不符合SpriteKit的最佳实践),我的应用程序可以达到大约120 MB的RAM。 此时,我收到一些内存警告, SKScenes
的背景图像被释放。 这是令人惊讶的,因为我正在使用的iPad 3应该崩溃在624 MB,而120 MB远远低于此( 源 )。
奇怪的是,当我运行我的应用程序时, 其他进程使用的RAM量急剧增加。 随着时间的推移,请查看以下video以及我的笔记: https : //www.youtube.com/watch?v = GoMKK3XXWFw&feature = youtu.be
- 在0:00,该应用程序刚刚启动。 它位于菜单屏幕上,使用6.9 MB的内存。 其他进程耗尽了235 MB的内存。
- 在0:10,我打开游戏本身。 它加载了一堆图像,最高可达80 MB。 奇怪的是,其他进程现在使用300 MB的内存。 为什么70 MB跳?
- 在0:20,我进入我的应用程序中的下一个屏幕,这将内存增加5 MB(最多85 MB)。 其他进程跳转到340 MB(+40 MB)。
- 在0:33,我进入我的应用程序中的下一个屏幕。 我的应用程序的内存使用大约保持在85 MB,但其他进程跳转到400 MB(+ 60 MB)。
- 在0:40,我进入我的应用程序中的下一个屏幕。 我的应用程序的内存高达90 MB,但其他进程跳转到440 MB(+40 MB)。
- 在凌晨1点,我触发一个动画,它会加载一些新的图像。 我的应用程序的内存短暂上升到115 MB然后回落到95 MB。 其他进程的内存不会改变。
- 从凌晨1点到凌晨1点40分,我正在通过一个屏幕进行播放,将声音加载到105 MB。 在1:40,我加载了一个新的图像,跳到120 MB。 其他进程的记忆基本上是不变的。
- 在1:45,我加载一个新的屏幕,然后其他进程的内存跳转到500 MB。
- 在这一点上,我会得到一个记忆警告,我的背景图像将被释放。 这是有道理的,因为我使用120 MB(我的应用程序)+ 500 MB(其他进程)= 620 MB。
我不确定如何调试这个。 我试图在仪器的工具活动监视器中查看我的内存使用情况,但它没有记录大的其他进程内存跳转。
两个问题:
1.为什么会这样?
2.我该如何调试这样的东西?
UPDATE
其他进程的内存消耗模式在不同设备上有很大差异。 下面的内存使用模式是每个屏幕(每个ViewController推送)。 iPad Mini :233 MB – > 170 MB – > 160 MB – > 155 MB – > 160 MB – > 155 MB – > 105 MB iPad 3 :320 MB – > 380 MB – > 400 MB – > 440 MB – > 470 MB – > 470 MB – > 370 MB