ios 内存泄露
来源:互联网 发布:淘宝下单截图 编辑:程序博客网 时间:2024/06/12 18:50
OS内存泄露排查和解决步骤(转载)
这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。
本文假设你已经比较熟悉Obj-C的内存管理机制。
实验的开发环境:XCode 4.5.2
1、运行Demo。
先下载一个实现准备好的内存泄露的Demo吧:leak app
下载下来,打开运行,程序是一个寿司的列表,列出各种寿司卷。试着选择里面的几行,应该是选第二行的时候就崩溃了。崩溃截图:
在崩溃的地方断住了,知道crash的地方了,但是不知道具体crash的原因。
2、设置NSZombieEnabled
这是一个 “EXC_BAD_ACCESS”错误。我们打开XCode的选项:“NSZombieEnabled” 。在crash时可能会给你更多的一些提示信息。
设置步骤:1
2:勾上红色框里的
运行,按刚才的操作选中其中的cell。再次crash,这次在output窗口会看到多了一项错误信息:
2012-11-28 13:22:08.911 PropMemFun[2132:11303] *** -[CFString respondsToSelector:]: message sent to deallocated instance 0x713ebc0
大概意思是:向已释放的内存发送消息。也就是说使用了已释放的内存,在C语言相当于使用了“野指针”
看了下crash的这个语句,sushiString应该是没问题的,它是从stringWithFormat初始化出来的。那就是_lastSushiSelected的问题。
_lastSushiSelected指向了sushiString,sushiString是一个autorelease变量。3、分析内存泄露(shift+command+b)
app不crash了,那看看有没有内存泄露。用XCode的Analyze就能分析到哪里有内存泄露。
这里提示alertView没被释放,有内存泄露,那我们释放
[alertView release];
再分析,这个问题解决了。
4、使用Instruments的leaks工具
按上面操作,build成功后跳出Instruments工具,选择Leaks选项,这时候寿司程序也运行起来了,选中list中的项,拖动等操作后,工具显示效果如下:
这时候左下角的Call Tree的可选项可以选了。选中Invert Call Tree 和Hide System Libraries,显示如下:
- IOS内存泄露
- iOS内存泄露查处
- Ios 内存泄露
- ios 内存泄露调试
- ios检查内存泄露
- iOS UIWebView 内存泄露
- ios Instruments 内存泄露
- ios 内存泄露
- ios Instruments 内存泄露
- ios Instruments 内存泄露
- iOS 检测内存泄露
- ios 检查内存泄露
- [iOS] AFNetworking3内存泄露
- IOS内存泄露
- iOS 内存泄露查找
- iOS ARC也会有内存泄露
- iOS开发内存泄露修复
- iOS ARC也会有内存泄露
- 位图像素的颜色——杭电携程编程大赛 (预赛第二场)
- Transaction has been rolled back because it has been marked as rollback .
- WIN7系统MySQL安装教程
- eclipse debug hadoop
- cocos2dx 资料整理
- ios 内存泄露
- 第五周作业——有向图邻接表表示及反向图构造
- XSLT 实例
- Android LayoutInflater详解
- windows 下shell 工具
- 人数不定的工资类
- OC NSDate 总结
- 小细节也能轻松减肥
- 每天都做一些切合你想做的