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

2024-04-06

我有一个使用几个的应用程序UIViewControllers with SKScenes里面有一些大图像和ObjectAL http://kstenerud.github.io/ObjectAL-for-iPhone/对于声音。

按下几个视图控制器后SKScenes在内部(是的,我知道这不符合 SpriteKit 最佳实践),我的应用程序拥有大约 120 MB 的 RAM。此时,我收到一些内存警告和我的背景图像SKScenes被释放。这很令人惊讶,因为我正在使用的 iPad 3 在 624 MB 时应该崩溃,而 120 MB 远小于这个值(source https://stackoverflow.com/questions/5887248/ios-app-maximum-memory-budget/15200855#15200855).

奇怪的是,当我运行我的应用程序时,所使用的 RAM 量其他流程急剧增加。请观看以下视频以及我随时间推移所做的笔记:

  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 推送)的。小型平板电脑:233 MB —> 170 MB —> 160 MB —> 155 MB —> 160 MB —> 155 MB —> 105 MBiPad 3:320MB —> 380MB —> 400MB —> 440MB —> 470MB —> 470MB —> 370MB


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 内存管理——其他进程 RAM 增加 的相关文章

随机推荐