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 增加 的相关文章

  • TypeError:cli.init 不是 React Native 的函数

    在 MacBook Air M1 芯片中运行 npx react native init appName 时 TypeError cli init is not a function at run opt homebrew lib node
  • 当 C 中没有足够的内存用于静态分配时会发生什么?

    当您动态分配内存时 例如malloc 1024 sizeof char 结果指针设置为NULL如果没有足够的可用内存来满足请求 当没有足够的内存来满足静态分配时会发生什么 例如char c 1024 char c 1024 不一定是静态分配
  • Base64Transcoder.m 重复符号

    我想使用 SKPSMTPMessage 库 唯一的问题是这个库包含文件 Base64Transcoder m 由于我有 Dropbox SDK 该文件会出现重复错误 我该如何解决这个错误 我不能直接删除 Base64Transcoder m
  • 播放声音无延迟 iOS

    我找不到如何以低延迟播放真实声音的方法 我尝试使用 AVFoundation 音频播放器 巨大的延迟大约 500 毫秒 所以我尝试创建系统声音 如果运气不好 延迟大约为 200 毫秒 虽然不多 但对我来说没有用 我最多需要 50 毫秒 确保
  • 如何获取多点触摸 UITapGestureRecognizer 的多个位置

    我的视图中有一个 UITapGestureRecognizer 我可以使用下面的代码很好地获取其触摸的位置 现在 如果我将此识别器的触摸次数更改为 2 或更多 它仍然会为我提供一个位置 如何获得两次触摸的两个位置 tapGesture lo
  • 剪裁为形状的 SwiftUI 图像在上下文菜单中具有透明填充

    在我的 SwiftUI 应用程序中 我的资产目录中有一张宽高比为 1 1 的图像 在我的代码中 我有一个Image使用不同的宽高比查看 将图像裁剪为新尺寸 Image My Image resizable aspectRatio conte
  • 当我启动项目时没有 viewcontroller.swift 文件 [重复]

    这个问题在这里已经有答案了 我尝试启动该项目并使用视图控制器 但我没有看到它 仅appdelegate和scenedelegate和contentview 下面的代码应该添加到视图控制器中 但我不知道添加到哪里 它不断给我一条错误消息 指出
  • CloudKit 获取当前用户的所有订阅

    我设法在 Apple CloudKit 中保存 更改和删除记录 我什至收到了与订阅相关的通知 但我不知道如何列出当前用户的所有订阅 到目前为止 这是我的代码 let operation CKFetchSubscriptionsOperati
  • 正在解除分配时尝试加载视图控制器的视图... UISearchController

    我有创建一个的代码UISearchController in my UIVIew sviewDidLoad self resultSearchController let controller UISearchController sear
  • 应用因广告标识符 (IDFA) 被拒绝

    我的申请因以下原因被拒绝 您和您的应用程序 以及与您有联系的任何第三方 签订广告服务合同 可以使用广告标识符 以及通过使用广告获得的任何信息 标识符 仅用于服务广告的目的 如果一个用户 重置广告标识符 则您同意不合并 直接或间接关联 链接或
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 同一应用程序的不同版本取决于设备(应用程序商店)

    我已经将我的游戏提交到App Store并更新了 现在最新版本是每个下载我游戏的人都应该得到的版本 对吗 现在的问题是 当我从 iPad mini 上的 App Store 下载游戏时 我得到的是正确的版本 但是当我从 iPad 2 下载游
  • UINavigationControllerDelegate的didShowViewController方法被调用了两次

    class ViewController UIViewController UINavigationControllerDelegate override func viewDidLoad super viewDidLoad navigat
  • 如何创建一个 NSMutableArray 并为其分配一个特定的对象?

    我刚刚开始接触 Obj C 并且希望创建一个 MKAnnotations 数组 我已经创建了名为的 MKAnnotation 类TruckLocation其中包含名称 描述 纬度和经度 这是到目前为止我所拥有的数组 NSMutableArr
  • prepareForSegue 和代表

    我有一个有两个 segue 的应用程序 在其中一个 Segue 中 当前视图控制器成为委托 而另一个则不是 void prepareForSegue UIStoryboardSegue segue sender id sender if s
  • CNContact 添加新的联系人问题

    我在通过以下方式添加联系人时遇到问题联系框架 我使用的是装有 iOS 12 1 2 的 iPhone 5s 设备 我添加联系人的代码如下 let saveRequest CNSaveRequest saveRequest add self
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • Xcode 不会在故事板中显示我的文本字段占位符文本

    当我在属性检查器中分配文本字段的占位符值时 它不会显示在故事板中 但是 当我运行应用程序的模拟器时 它就在那里 我缺少什么设置吗 我只想能够在编辑器中看到占位符文本 下面是 xcode 和模拟器之一的屏幕截图 我遇到了同样的问题 幸运的是我
  • 自动布局:Y 位置为两个值中的最大值

    我有一个按钮 play Button 和两个 UIView myView 1 和 myView 2 它们的位置在执行过程中可能会发生变化 我希望 playButton 的顶部比 UIView 1 的底部或 UIView 2 的底部低 10
  • 在 iOS 中管理和解除多个视图控制器

    我是一名 iPhone 新手程序员 在开发我的第一个游戏 应用程序时 我为自己提出了一个问题 创造了一个问题 我对此进行了研究 并认为我已经看到了答案 但我不明白如何使它们适用于我的应用程序 我有一个游戏 有几个视图控制器 欢迎 玩 高分

随机推荐