ios - Xcode Instruments 的分配工具遗漏了很多

标签 ios debugging instruments

我的应用经常崩溃,原因我很难理解。与其说是崩溃,不如说是它被外部“未知”进程杀死了:

Processes
     Name        <UUID>       rpages       recent_max       [reason]          (state)

     test-app    <....>       167111       167111     [per-process-limit] (frontmost) (resume)

我可以理解,如果我要分配一个巨大的内存块,或者无数个更小的内存块,但我不会做任何离谱的事情。使用 Instruments 进行分析告诉我,该应用程序仅使用大约 8 MB,当我加载一些大内容时偶尔会激增至 13 MB 左右。没有严重的泄漏,应用程序通常很快就会被杀死。

一位同事开始使用 Activity Monitory 检查应用程序在模拟器中运行时的内存使用情况,并注意到当我们开始使用时,内存从大约 70 MB(我猜模拟器中的情况略有不同)飙升至 800 MB 以上某个图书馆。因此,我开始在模拟器中而不是在设备上进行分析。 Allocations 工具继续报告该应用程序使用了 8 MB 左右,但 VM Tracker 讲述了另一个故事:

Instruments screen shot

所以...看起来 VM Tracker 能够看到一些显着的内存使用,而 Allocations 则不能。

为什么分配工具缺少此应用正在使用的 99% 的内存?

更新:为了回答 nielsbot 的问题,我仔细查看了 VM Tracker 的信息,发现我在分配中看不到的最大部分内存归因于 Core Animation :

VM Tracker screenshot

最佳答案

我认为 VM 空间包括共享框架和映射内存之类的东西,而分配可能不......

我猜驻留大小更接近实际使用的 RAM 量。纯 VM 内存可能只是映射地址空间,而不是实际消耗的物理 RAM。

例如,查看 Safari,我看到映射了 1.92 GB 虚拟内存,但接近 549 MB 常驻内存,我认为这是有道理的... enter image description here

关于ios - Xcode Instruments 的分配工具遗漏了很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15536557/

相关文章:

升级到 Xcode 5.0 后,Xcode 无法使用所选设备运行

ios - 解释 ALAssetRepresentation 中的 XMP 元数据

ios - IAP(应用内购买)入门价格我如何管理它 iOS?

jQuery 选择的选项仅在调试中工作

c# - 无法跨过属性评估

ios - 在 Xcode 6.0.1 中使用仪器进行分析时应用程序挂起

重新安装后的 iOS 推送通知设置

ios - AVAssetWriter startWriting 状态为 3 时无法调用方法

php - 如何在 Visual Studio Code (VSCode) 上运行或调试 php

iphone - Instruments 中找不到核心动画配置文件