我的应用经常崩溃,原因我很难理解。与其说是崩溃,不如说是它被外部“未知”进程杀死了:
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 讲述了另一个故事:
所以...看起来 VM Tracker 能够看到一些显着的内存使用,而 Allocations 则不能。
为什么分配工具缺少此应用正在使用的 99% 的内存?
更新:为了回答 nielsbot 的问题,我仔细查看了 VM Tracker 的信息,发现我在分配中看不到的最大部分内存归因于 Core Animation :
最佳答案
我认为 VM 空间包括共享框架和映射内存之类的东西,而分配可能不......
我猜驻留大小更接近实际使用的 RAM 量。纯 VM 内存可能只是映射地址空间,而不是实际消耗的物理 RAM。
例如,查看 Safari,我看到映射了 1.92 GB 虚拟内存,但接近 549 MB 常驻内存,我认为这是有道理的...
关于ios - Xcode Instruments 的分配工具遗漏了很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15536557/