ios - 为什么 Xcode 会比 Instruments for SceneKit 应用程序显示更多的内存使用?
问题描述
我正在尝试调试为什么我们基于 SceneKit 的应用程序使用这么多内存,但 Xcode 和 Instruments / Allocations 似乎对正在使用的内存量有非常不同的值。当我查看 Xcode 时,我看到类似600 MB的内容,但是当我将相同的运行会话传输到 Instruments / Allocations 时,我看到持久字节的数量非常不同,例如150 MB。
哪一个是正确的?为什么有区别?他们在测量不同的东西吗?
(无论我是转移 Xcode 调试会话还是在 Instruments 中重新开始,它似乎都没有太大区别。)
我关心的原因是 iOS 正在杀死应用程序以使用过多的内存(根据 Xcode),但我似乎无法通过 Instruments 找到问题。
我尝试关闭所有 GPU 和 Metal 调试选项,但它们似乎没有什么不同。
解决方案
哪一个是正确的?
我的直觉是:仪器。它使用 Dtrace 来(抱歉)检测您的代码并观察实际的分配和释放,但会牺牲性能。Xcode 调试导航器内存图更像是一个外部视图,旨在提供对正在发生的事情的一般感觉。这正是后者为您提供切换到前者的方法的原因——因为(仪器)是您将获得真正测量的地方。
(但是,请记住,Instruments 可能无法将您看到的一些图形虚拟内存后备存储包括在总数中。有很多 WWDC 视频更详细地讨论了这个主题。)
推荐阅读
- qt - 构建后如何自动将我的插件安装到“插件”目录?
- javascript - 使用 facebook 评论检索在我的不同博客上完成的 facebook 评论
- python - TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到 FileStorage
- geocoding - 用于将地址关联到 shapefile 的批量地理编码 [here-api]
- ios - 带有 IBOutlet 集合的 UIViewController 类仍然与不再存在的情节提要有连接
- c# - C# post 方法适用于本地主机,但不适用于共享主机
- java - jsp代码总是在结果集中显示错误?
- javascript - 如何在此框中检查多密度数组中的空值
- macos - 如何通过 vnet 网关从 mac rdp 到 azure vm
- c - 将电话号码从字母形式转换为数字形式