Xcode Instruments的分配工具错过了很多

Cal*_*leb 6 debugging instruments ios

由于我很难理解的原因,我的应用程序已经崩溃了很多.它不是那么崩溃 - 它被外部"未知"过程杀死:

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

     test-app    <....>       167111       167111     [per-process-limit] (frontmost) (resume)
Run Code Online (Sandbox Code Playgroud)

我可以理解,如果我分配一块巨大的内存块,或者数十亿个较小的块,但我没有做任何令人发指的事情.使用Instruments进行性能分析告诉我,该应用程序仅使用大约8 MB,当我加载一些大型内容时,偶尔会出现高达13 MB左右.没有严重的泄漏,应用程序通常会很快被杀死.

一位同事开始使用Activity Monitory在模拟器中运行时检查应用程序的内存使用情况,并注意到当我们开始使用某个库时,内存从大约70 MB(我猜模拟器中的情况有点不同)飙升到800 MB以上.所以,我开始在模拟器中进行分析,而不是在设备上进行分析.分配工具继续报告应用程序使用8-ish MB,但VM Tracker告诉另一个故事:

仪器屏幕截图

所以...看起来VM Tracker能够看到一些重要的内存使用,而Allocations则不然.

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

更新:为了回应nielsbot的问题,我仔细研究了VM Tracker的信息,发现在Allocations中我没有看到的内存的最大部分归因于Core Animation:

VM Tracker截图

nie*_*bot 2

我认为虚拟机空间包括共享框架和映射内存等内容,而分配可能不包括......

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

例如,查看 Safari,我看到映射了 1.92 GB 虚拟内存,但更接近 549 MB 驻留内存,我认为这是有道理的......在此输入图像描述