组件介绍
OOMDetector是手Q自研的IOS内存监控组件,腾讯内部目前已有多个App接入了OOMDetector,它主要有以下两个功能:
爆内存堆栈统计:负责记录进程内存分配堆栈和内存块大小,在爆内存时Dump堆栈数据到磁盘
内存泄漏检测:检测内存泄漏,目前支持Malloc内存块和OC对象的泄漏检测
OOMDetector可以快速帮助开发者发现和定位App爆内存问题和内存泄漏,组件目前已经在Github开源,源码地址:https://github.com/Tencent/OOMDetector。
背景
目前业内已有一些比较的IOS内存分析工具,下面逐个介绍这些工具的功能以及它们在使用上的不足。
Allocation
作为IOS开发,我们都很熟悉苹果官方提供的Allocation内存分析工具,在开发调试阶段,可以用Allocation详细分析App各模块内存占用。Allocation对App的内存监控比较全面,能监控到所有堆内存以及部分VM内存分配。虽然Allocation的功能比较强大,但是它也有比较明显的使用局限性,主要表现为以下两点:
无法独立在App运行,只能在调试阶段连接Mac使用
性能较差,大型App开启后容易引发卡死
这两点限制决定了Allocation只适合于在开发阶段辅助分析代码中存在的内存问题,而无法直接对线上用户的问题进行监控和定位。