内存泄漏检查工具


Instruments

Instruments 是 Xcode 自带的工具集合,为开发者提供强大的程序性能分析和测试能力。

它打开方式为:Xcode → Open Developer Tool → Instruments。其中的 Allocations、Leaks 和 Zombies 功能可以协助我们进行内存泄漏检查。

  • Leaks:动态检查泄漏的内存,如果检查过程时出现了红色叉叉,就说明存在内存泄漏,可以定位到泄漏的位置,去解决问题。此外,Xcode 中还提供静态监测方法 Analyze,可以直接通过 Product → Analyze 打开,如果出现泄漏,会出现“蓝色分支图标”提示。
  • Allocations:用来检查内存使用/分配情况。比如出现“循环加载引起内存峰值”的情况,就可以通过这个工具检查出来。
  • Zombies:检查是否访问了僵尸对象。

Instruments 的使用相对来说比较复杂,你也可以通过在工程中引入一些第三方框架进行检测。

MLeaksFinder

MLeaksFinder 是 WeRead 团队开源的 iOS 内存泄漏检测工具。

它的使用非常简单,只要在工程引入框架,就可以在 App 运行过程中监测到内存泄漏的对象并立即提醒。MLeaksFinder 也不具备侵入性,使用时无需在 release 版本移除,因为它只会在 debug 版本生效。

不过 MLeaksFinder 的只能定位到内存泄漏的对象,如果你想要检查该对象是否存在循环引用。就结合 FBRetainCycleDetector 一起使用。

FBRetainCycleDetector

FBRetainCycleDetector 是 Facebook 开源的一个循环引用检测工具。它会递归遍历传入内存的 OC 对象的所有强引用的对象,检测以该对象为根结点的强引用树有没有出现循环引用。