iOS内存管理 - 其他进程RAM增加

时间:2014-12-11 20:11:15

标签: ios memory memory-management sprite-kit

我的应用程序使用了一对UIViewControllers内置SKScenes,一些大图像和ObjectAL内容。

在内部使用SKScenes推送几个视图控制器之后(是的,我知道这不符合SpriteKit的最佳实践),我的应用程序可以达到大约120 MB的RAM。此时,我收到一些内存警告,我的SKScenes中的背景图像被释放。这是令人惊讶的,因为我正在使用的iPad 3应该以624 MB的速度崩溃,而120 MB远远低于此值(source)。

奇怪的是,当我运行我的应用程序时,其他进程使用的RAM量急剧增加。随着时间的推移,请查看以下视频以及我的笔记:https://www.youtube.com/watch?v=GoMKK3XXWFw&feature=youtu.be

  1. 在0:00,应用程序刚刚启动。它位于菜单屏幕上,使用6.9 MB的内存。其他进程耗尽了235 MB的内存。
  2. 0:10,我打开游戏本身。它加载了一堆图像,最高可达80 MB。奇怪的是,其他进程现在使用300 MB的内存。为什么70 MB会跳?
  3. 在0:20,我转到我的应用程序中的下一个屏幕,这会将内存增加5 MB(最多85 MB)。其他进程跳转到340 MB(+40 MB)。
  4. 在0:33,我转到我的应用中的下一个屏幕。我的应用程序的内存使用量保持在85 MB左右,但其他进程会跳转到400 MB(+ 60 MB)。
  5. 0:40,我进入应用程序的下一个屏幕。我的应用程序的内存高达90 MB,但其他进程跳转到440 MB(+40 MB)。
  6. 在凌晨1点,我会触发一个加载一些新图像的动画。我的应用程序的内存短暂上升到115 MB,然后回落到95 MB。其他进程的内存不会改变。
  7. 从凌晨1点到凌晨1点40分,我正在通过一个屏幕进行播放,将声音加载到105 MB。在1:40,我加载了一个新的图像,跳到120 MB。其他进程的记忆基本上是不变的。
  8. 在1:45,我加载一个新屏幕,然后其他进程的内存跳转到500 MB。
  9. 在这一点上,我会得到一个记忆警告,我的背景图像将被释放。这是有道理的,因为我使用120 MB(我的应用程序)+ 500 MB(其他进程)= 620 MB。
  10. 我不确定如何调试这个。我试图在仪器的工具活动监视器中查看我的内存使用情况,但它没有记录大的其他进程内存跳转。

    两个问题:

    1。为什么会这样?

    2。我该如何调试这样的东西?


    更新

    其他进程的内存消耗模式在不同设备上有很大差异。下面的内存使用模式是每个屏幕(每个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

0 个答案:

没有答案