(转载) ios内存泄漏检查-leaks使用
转载链接: https://www.cnblogs.com/huangxiaoying/p/6483539.html
内存泄漏及影响
内存泄漏是动态分配的内存块,在程序的数据空间中任何位置都没有指向它的指针。这类块是孤立内存,由于没有指向这些块的指针,程序无法引用他们。
内存泄漏会导致App所占用的虚拟内存增加,且通常产生内存碎片,影响App及整个系统的性能。
通常情况下,导致内存泄漏的原因是未释放分配的内存,而又丢失指向分配块的指针。
Leaks工具
Xcode的Instruments里面有一个Leaks工具,可以帮助你定位发生内存泄漏的代码段,以便修复问题。
通过Xcode-Open Developer Tool-Instruments打开Instruments面板,选择Leaks工具,打开后界面如下图:
![](https://upload-images.jianshu.io/upload_images/562421-f2afaf7ed06b49c5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Leaks面板
选择Target,在右下角Display Setting面板的Call Tree,勾选Invert Call Tree和Hide System Libraries,方便接下来我们迅速查找有内存问题的代码段。
![](https://upload-images.jianshu.io/upload_images/562421-9e046bf24a62b670.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Display Setting
点击Recorder Button开始监测,出现下图红色X号,表示此处有内存泄漏问题。
![](https://upload-images.jianshu.io/upload_images/562421-5bbfcdfd6564ccdd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
内存泄漏
在时间轴上拖拽选择X号前后区域,可以在左下面板看到所选时间段内调用的函数栈。