Xcode内存泄露排查工具

2017-10-19

在Xcode的菜单中,Product -> Profile,选择Leaks工具,进行内存泄露排查。

排查的基本步骤是,运行录制,标记Generation A,操作App,标记Generation B,或若干个Generation,然后观察A到B的内存变化,未释放的内存,等。

录制完成后有选项,可以查看不同的内存类型,如下图

第一个是所有的Heap以及Annonymous VM

Heap是对象存放的地方。

Annonymous VM,全称是,Annonymous Virtual Memory,简单来说就是“未命名”的一些内存,貌似多数是一些CF层的东西。

包含CoreImage,CoreData的一些存储,如CGImage应该就是在这里面的。

Instruments: Heap Allocations and Anonymous VM

What does “Anonymous VM” in allocations instruments signify?

所以一般我们用第一个。

标记完成后就能看到Generation A的状态,与Generation B的状态,如下图

可以看出,我在B的状态有很多没有释放掉的CoreImage,展开点进去可以看到具体是哪些CoreImage以及他们的调用栈,然后就可以定位到具体的代码了。

注意上图的内存增长状态,在程序运行中会一直变化,因为可能A与B之间产生的对象,在后来的运行中被释放掉了,这时B的增长就会减少。

Instruments Tutorial with Swift: Getting Started

raywenderlich的这篇文章更详细,还有将检测时间的,懒得翻译了。。