最近几天在优化公司APP
,用到了Leaks
进行内存泄漏检测,总结记录一下
如果要检测内存泄露,可以使用Xcode
自带的Instruments
中的Leaks
工具来检测.
使用工具
Xcode 14.0.1
Instruments
因为现在的开发环境是ARC
,所以很少会出现内存泄漏的情况.但是在调用到一些底层API
和C语言
类型的操作的时候,可能会出现这样的问题;
第一步:打开Xcode自带的Instruments
1131673401710_.pic.jpg选择Leaks
工具
按上面操作,build成功后跳出Instruments
工具,选择Leaks
选项
到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!
1.选中Xcode
先把程序(command + R)
运行起来
2.再选中Xcode
,按快捷键(command + control + i)
运行起来,此时Leaks
已经跑起来了
3.由于Leaks
是动态监测,所以我们需要手动操作APP
,一边操作,一边观察Leaks
的变化,当出现红色叉时,就表示监测到了内存泄露,可以进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:
4.下面就是定位修改了,此时选中有红色柱子的Leaks
,下面有个Call Tree
的选项,点开,选中Invert Call Tree
和Hide System Libraries
; 如下图所示
1191673402179_.pic.jpg
Separate by Thread -> 按线程分割
Invert Call Tree -> 反转调用顺序
Hide System Libraries -> 隐藏系统库
Flatten Recursion -> 展平递归
到这里就算基本完成啦,这里显示的就是内存泄露代码调用堆栈,那么现在还差一步:定位!
5.选中内存泄漏得那一行,双击右侧代码调用的最后一个方法;如图所示
image.png会自动跳到内存泄露代码处,如图所示
6.找到了内存泄露的地方,那么我们就可以修改即可;
这里,我这处内存泄漏,是因为我开辟了一块内存空间,但是没用释放,所以造成了内存泄漏;
end!
网友评论