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:

我认为虚拟机空间包括共享框架和映射内存等内容,而分配可能不包括......
我猜驻留大小更接近实际使用的 RAM 量。纯虚拟机内存可能只是映射地址空间,而不是实际消耗的物理 RAM。
例如,查看 Safari,我看到映射了 1.92 GB 虚拟内存,但更接近 549 MB 驻留内存,我认为这是有道理的......