使用Xcode7的Instruments定位iOS内存泄露
2016-04-14 10:45
225 查看
简单介绍下怎么使用Xcode7自带的Instruments中的Leaks检测我们的程序有没有内存泄露和定位内存泄露的代码.(分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的)
第一步:打开Xcode7自带的Instruments
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009091643924-595728852.png)
或者:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009091749081-130873097.png)
按上面操作,build成功后跳出Instruments工具,选择Leaks选项
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009092041784-1470480543.png)
选择之后界面如下图:
到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!
1.选中Xcode先把程序(command + R)运行起来
2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了
3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009093354378-307036239.png)
4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009093833143-1343849154.png)
显示如下图界面
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094008440-840369021.png)
5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示如下:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094249174-5472541.png)
到这里就算基本完成啦,这里显示的就是内存泄露代码部分,那么现在还差一步:定位!
6.你只要在这些方法上选中一条双击,就会跳转到具体的内存泄露代码处
7.找到了内存泄露的地方,就可以放心修改啦
第一步:打开Xcode7自带的Instruments
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009091643924-595728852.png)
或者:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009091749081-130873097.png)
按上面操作,build成功后跳出Instruments工具,选择Leaks选项
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009092041784-1470480543.png)
选择之后界面如下图:
到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!
1.选中Xcode先把程序(command + R)运行起来
2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了
3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009093354378-307036239.png)
4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009093833143-1343849154.png)
显示如下图界面
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094008440-840369021.png)
5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示如下:
![](http://images2015.cnblogs.com/blog/819024/201510/819024-20151009094249174-5472541.png)
到这里就算基本完成啦,这里显示的就是内存泄露代码部分,那么现在还差一步:定位!
6.你只要在这些方法上选中一条双击,就会跳转到具体的内存泄露代码处
7.找到了内存泄露的地方,就可以放心修改啦
相关文章推荐
- c语言内存泄露示例解析
- 解决js函数闭包内存泄露问题的办法
- IE下使用jQuery重置iframe地址时内存泄露问题解决办法
- Android App调试内存泄露之Cursor篇
- js内存泄露的几种情况详细探讨
- Javascript 闭包引起的IE内存泄露分析
- 深入解析PHP垃圾回收机制对内存泄露的处理
- PHP脚本内存泄露导致Apache频繁宕机解决方法
- 容易造成JavaScript内存泄露几个方面
- 关于js内存泄露的一个好例子
- 总结JavaScript在IE9之前版本中内存泄露问题
- Android垃圾回收机制解决内存泄露问题
- Android编程中避免内存泄露的方法总结
- C语言中的内存泄露 怎样避免与检测
- PHP CURL 内存泄露问题解决方法
- Java中典型的内存泄露问题和解决方法
- Android中Handler引起的内存泄露问题解决办法
- 浅谈Java编程中的内存泄露情况
- 教你如何解决XCODE升级后插件不能用问题
- 浅谈Xcode 开发工具 XCActionBar