由于我难以理解的原因,我的应用程序经常崩溃。它并没有崩溃——它被外部的“未知”进程杀死:
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-ish MB,但 VM Tracker 讲述了另一个故事:
所以......看起来VM Tracker能够看到分配没有的一些重要内存使用。
为什么分配工具缺少此应用程序使用的 99% 的内存?
更新:针对 nielsbot 的问题,我仔细查看了 VM Tracker 的信息,发现我在分配中没有看到的最大部分内存归因于核心动画: