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

时间:2013-03-20 23:13:16

标签: 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以上某个图书馆。所以,我开始在模拟器中进行分析,而不是在设备上进行分析。分配工具继续报告应用程序使用8-ish MB,但VM Tracker告诉另一个故事:

Instruments screen shot

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

为什么分配工具会丢失此应用使用的99%的内存?

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

VM Tracker screenshot

1 个答案:

答案 0 :(得分:2)

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

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

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