虽然苹果给我们提供了ARC(自动内存管理模式)的开发环境,但是在日常开发中也不排除会出现内存泄漏问题
检测内存泄漏有很多方法,本篇文章介绍的是xcode自带工具instruments
嗯,不多说,快速入门
第一步(进工具)
首先我们xocde(当前版本9.4)连接真机,product -> profile进入instruments工具,然后选择leaks(图1,图2)
第二步(检测)
点击左上角红色圆圈,开始录制,此时手机会进入我们的app,leaks是动态监测,我们需要操作我们的app,同时观察leak变化,当出现红色叉子的时候,就说明出现了内存泄漏(图3)
注意:有一部分同学在选择call tree后,可能会查看不到源码,只是显示16进制的数据。此时需要你在Xcode中检查是否有dSYM File生成,如下图所示选择DWARF with dSYM File即可.如下图
第三步(定位)
我们找到左下角Leaks>田Leaks>Leaks by Backtrace,如图4所示点击,选择Call Tree
然后我们在最下方,calltree勾选两个选项,Invert Call Tree 和Hide System Libraries,如图5
注: Invert Call Tree 这个选项可以快捷的看到方法调用路径最深方法占用CPU耗时.把调用层级最深的方法显示在最上面,更容易找到最耗时的操作。
Hide System Libraries英文再不好的也可以看懂,应该不用解释(隐藏系统的函数).
这会(图6)呈现出来的就是工具帮我们定位的发生内存泄漏的地方,我们只需要双击其中一行,就能看到发生内存泄漏的代码位置(图7)
搞定
instruments除了leaks,还有很多有用的工具,比如Time Profiler.Allocations等,对app做个全面检测,更改不足之处,尽可能的优化app......