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

问题描述 投票:1回答:1

我有一个应用程序,其内部使用了UIViewControllersSKScenes,并带有一些大图像,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:00,我触发了一个动画,该动画将加载几个新图像。我的应用程序的内存短暂上升到115 MB,然后又下降到95 MB。其他进程的内存不变。
  7. [从1:00-1:40,我正在播放屏幕,一路加载声音,最高可达105 MB。在1:40时,我加载了一个新图像,最大可扩展到120 MB。整个过程中其他进程的内存基本上是恒定的。
  8. 在1:45,我加载了一个新屏幕,其他进程的内存再次跳到500 MB。
  9. 在这一点上,我将收到内存警告,并且我的背景图像将被释放。这是有道理的,因为我正在使用120 MB(我的应用程序)+ 500 MB(其他进程)= 620 MB。

我不确定该如何调试。我试图在“工具”的“活动监视器”中查看我的内存使用情况,但它没有记录其他大型进程内存跳跃。

两个问题:

1。为什么会这样?

2。我该如何调试类似的内容?


UPDATE

“其他进程”的内存消耗模式在设备之间非常不同。下面的内存使用模式是每个屏幕(通过ViewController推送)。iPad Mini:233 MB-> 170 MB-> 160 MB-> 155 MB-> 160 MB-> 155 MB-> 105MBiPad 3:320 MB-> 380 MB-> 400 MB-> 440 MB-> 470 MB-> 470 MB-> 370 MB

ios memory memory-management sprite-kit
1个回答
0
投票

我建议面临此问题的任何人在此处查看此问题的答案:https://stackoverflow.com/a/61682545/4478402

© www.soinside.com 2019 - 2024. All rights reserved.