一、概述

内存泄漏就是“程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果”。

二、常见的内存泄漏情况:

  • 多个对象间的相互强引用
  • NSTime的循环引用
  • block的循环引用
  • delegate的循环引用
  • 通知的循环引用
  • WKWebView 造成的内存泄漏

三、内存泄漏检测

打开Xcode菜单栏中的Product选项中的Profile选项,也可以使用快捷键 command + I

blog_ leaks_001

然后在Instruments菜单中找到Leaks,如下图所示.

blog_ leaks_002

打开Leaks工具之后,我们首先在左上角选择我们需要检测的程序,这里我们可以检测当前Mac上任意一个开启的程序,这里我们选择模拟器的Demo程序,如下所示.

blog_ leaks_003

工具默认的是Allocations选项,然后我们需要选择Leaks选项,点击红色⭕️按钮,启动检测程序.

blog_ leaks_004

然后我们运行完成之后,就会得到下面的页面,我们就可以通过页面的信息找到我们内存泄漏的具体位置了.

blog_ leaks_005