首页 > 解决方案 > 为什么 Xcode 会比 Instruments for SceneKit 应用程序显示更多的内存使用?

问题描述

我正在尝试调试为什么我们基于 SceneKit 的应用程序使用这么多内存,但 Xcode 和 Instruments / Allocations 似乎对正在使用的内存量有非常不同的值。当我查看 Xcode 时,我看到类似600 MB的内容,但是当我将相同的运行会话传输到 Instruments / Allocations 时,我看到持久字节的数量非常不同,例如150 MB

哪一个是正确的?为什么有区别?他们在测量不同的东西吗?

(无论我是转移 Xcode 调试会话还是在 Instruments 中重新开始,它似乎都没有太大区别。)

Xcode 截图仪器截图

我关心的原因是 iOS 正在杀死应用程序以使用过多的内存(根据 Xcode),但我似乎无法通过 Instruments 找到问题。

我尝试关闭所有 GPU 和 Metal 调试选项,但它们似乎没有什么不同。

Xcode 调试方案选项在此处输入图像描述

标签: iosscenekitarkit

解决方案


哪一个是正确的?

我的直觉是:仪器。它使用 Dtrace 来(抱歉)检测您的代码并观察实际的分配和释放,但会牺牲性能。Xcode 调试导航器内存图更像是一个外部视图,旨在提供对正在发生的事情的一般感觉。这正是后者为您提供切换到前者的方法的原因——因为(仪器)是您将获得真正测量的地方。

(但是,请记住,Instruments 可能无法将您看到的一些图形虚拟内存后备存储包括在总数中。有很多 WWDC 视频更详细地讨论了这个主题。)


推荐阅读