iOS 使用Instruments的Leaks工具进行内存泄漏分析

终于忙完一段时间了,是时候监测一波项目的内存泄漏情况了
Xcode ---> Product ---> Profile 打开Instruments,然后选择Leaks
Instrument打不开可以参考iOS Instruments打不开解决方法

下图是我们的项目泄漏情况:

Snip20170516_1.png

看起来貌似还可以红叉不是太多,
下边就是解决这些内存泄漏了。

1、选中Leak Checks
iOS 使用Instruments的Leaks工具进行内存泄漏分析_第1张图片
Snip20170516_2.png
2、选中call tree

call tree的官方解释:Separate By Thread(线程分离,只有这样才能在调用路径中能够清晰看到占用CPU最大的线程.)

iOS 使用Instruments的Leaks工具进行内存泄漏分析_第2张图片
Snip20170516_4.png

勾上call tree侧边栏的Invert Call Tree 和 Hide System Libraries 两项选项

iOS 使用Instruments的Leaks工具进行内存泄漏分析_第3张图片
Snip20170516_5.png

Invert Call Tree 的意思是翻转调用树,直接定位到内存泄漏的那个方法,如果不勾选会显示最外层的函数,我们还要手动展开。可以点选看下效果
Hide System Libraries 的意思很明显了。就是隐藏系统类库,避免一些莫名其妙的,我们无法改动的信息迷惑我们。

3、泄漏列表

iOS 使用Instruments的Leaks工具进行内存泄漏分析_第4张图片
Snip20170516_6.png

以第三个泄漏为例进行解决
双击第三行定位到具体泄漏的函数,泄漏的字节数都标出来了,如此强大
Snip20170516_8.png

哈哈,问题找到了,显而易见,c语言的方法需要手动释放内存。 哪些方法需要释放内存呢?。
解决方法如下,
iOS 使用Instruments的Leaks工具进行内存泄漏分析_第5张图片
Snip20170516_10.png

修改代码之后泄漏不见了。


iOS 使用Instruments的Leaks工具进行内存泄漏分析_第6张图片
Snip20170516_11.png

快去你们的项目里边查看一波吧!

你可能感兴趣的:(iOS 使用Instruments的Leaks工具进行内存泄漏分析)