iOS 使用Instruments的Leaks工具进行内存泄漏分
2017-05-16 本文已影响83人
BetterComingDay
终于忙完一段时间了,是时候监测一波项目的内存泄漏情况了
Xcode ---> Product ---> Profile 打开Instruments,然后选择Leaks
Instrument打不开可以参考iOS Instruments打不开解决方法
下图是我们的项目泄漏情况:

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

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

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

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

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

哈哈,问题找到了,显而易见,c语言的方法需要手动释放内存。哪些方法需要释放内存呢?。
解决方法如下,

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

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