iOS 检测内存泄露
2015-06-19 11:40
309 查看
1.使用Instruments的leaks工具
分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的。那就需要用到Instruments了。
![](http://www.uml.org.cn/mobiledev/images/2012121237.png)
按上面操作,build成功后跳出Instruments工具,选择Leaks选项,这时候寿司程序也运行起来了,选中list中的项,拖动等操作后,工具显示效果如下:
![](http://www.uml.org.cn/mobiledev/images/2012121238.png)
大家可能都能猜到,红色的柱子表示内存泄露了。怎么通过这个工具看到在哪泄露了呢?
先在工具栏按下红色的圆形按钮,把工具监视内存的活动停下来。选择Leak,然后点中间十字交叉那,选择Call Tree.
![](http://www.uml.org.cn/mobiledev/images/2012121239.png)
这时候左下角的Call Tree的可选项可以选了。选中Invert Call Tree 和Hide System Libraries,显示如下:
![](http://www.uml.org.cn/mobiledev/images/20121212310.png)
这时候内存泄露的具体代码找到了,在右边的红色框框里指定了哪个方法出现了内存泄露。
你只要在这些方法上双击,就会跳转到具体的代码,哈哈,是不是很方便。
![](http://www.uml.org.cn/mobiledev/images/20121212311.png)
这里应该是提示100%内存会泄露。
2.分析内存泄露(shift+command+b)
Analyze主要分析以下四种问题:
1、逻辑错误:访问空指针或未初始化的变量等;
2、内存管理错误:如内存泄漏等;
3、声明错误:从未使用过的变量;
4、Api调用错误:未包含使用的库和框架
app不crash了,那看看有没有内存泄露。用XCode的Analyze就能分析到哪里有内存泄露
![](http://www.uml.org.cn/mobiledev/images/2012121235.png)
分析之后可以看到:
![](http://www.uml.org.cn/mobiledev/images/2012121236.png)
这里提示alertView没被释放,有内存泄露,那我们释放
[alertView release];
分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的。那就需要用到Instruments了。
![](http://www.uml.org.cn/mobiledev/images/2012121237.png)
按上面操作,build成功后跳出Instruments工具,选择Leaks选项,这时候寿司程序也运行起来了,选中list中的项,拖动等操作后,工具显示效果如下:
![](http://www.uml.org.cn/mobiledev/images/2012121238.png)
大家可能都能猜到,红色的柱子表示内存泄露了。怎么通过这个工具看到在哪泄露了呢?
先在工具栏按下红色的圆形按钮,把工具监视内存的活动停下来。选择Leak,然后点中间十字交叉那,选择Call Tree.
![](http://www.uml.org.cn/mobiledev/images/2012121239.png)
这时候左下角的Call Tree的可选项可以选了。选中Invert Call Tree 和Hide System Libraries,显示如下:
![](http://www.uml.org.cn/mobiledev/images/20121212310.png)
这时候内存泄露的具体代码找到了,在右边的红色框框里指定了哪个方法出现了内存泄露。
你只要在这些方法上双击,就会跳转到具体的代码,哈哈,是不是很方便。
![](http://www.uml.org.cn/mobiledev/images/20121212311.png)
这里应该是提示100%内存会泄露。
2.分析内存泄露(shift+command+b)
Analyze主要分析以下四种问题:
1、逻辑错误:访问空指针或未初始化的变量等;
2、内存管理错误:如内存泄漏等;
3、声明错误:从未使用过的变量;
4、Api调用错误:未包含使用的库和框架
app不crash了,那看看有没有内存泄露。用XCode的Analyze就能分析到哪里有内存泄露
![](http://www.uml.org.cn/mobiledev/images/2012121235.png)
分析之后可以看到:
![](http://www.uml.org.cn/mobiledev/images/2012121236.png)
这里提示alertView没被释放,有内存泄露,那我们释放
[alertView release];
相关文章推荐
- ios 调用writeToFile将图片保存到本地一直失败的解决方案
- iOS图片拉伸技巧
- 剖析开源监控Nagios故障
- iOS开发之使用XMPPFramework实现即时通信
- IOS学习笔记16——Core Data
- iOS 文件下载断点续传
- iOS去掉字符串两端的空格
- iOS 多线程使用总结(很实用)
- Gstreamer/Plugin-base/audiosink: AlsaSink AlsaSrc 结构解析
- iOS_autoLayout_Masonry
- 浅谈iOS学习之路(转)
- iOS md5 32位加密(区分大小写)
- iOS 解决汉字联想输入,导致字数限制失效的问题
- ios个人笔记
- Xamarin iOS教程之键盘的使用和设置
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记34 Info.plist、Capabilities
- iOS 修改navigationbar的高度
- Xamarin iOS教程之键盘的使用和设置
- 苹果IOS系统SVN命令
- iOS开发常见bug