内存优化

内存泄露指一个对象或变量在使用完成后没有释放掉,这个对下一直占用这部分内存,知道应用停止。

OC中,释放对象的内存时,可以发送release和autorelease消息,release消息马上将引用计数器减1,autorelease消息会把对象放入到内存缓存池中,会延迟到内存释放池周期到后,内存释放池会将池中所有对象的引用计数器减1.当引用计数器为0时,对象所占用的内存才被释放。

一、analyze工具检查内存泄露:analyze是用来来检测MRC代码的内存泄露问题,通过对代码的分析,查找release、retain等消息进行管理的。有氧ARC没有相关的消息,所有无法分析出ARC代码的内存泄露问题。现在不用MRC了,所以不做研究。

二、使用Instruments工具检查内存泄露

Product--->Profile菜单项启动Instruments工具,选择Leaks,点击开始分析,如果右上部分出现红色的菱形图标,说明有内存泄露,右下显示红色柱状图会显示泄露的对象,如果是绿色的菱形出现,说明没有检查出内存泄露,左上选择leak,选择Address列后面的箭头,会进入详细界面,可以看到它们的内存地址、占用字节,所属框架和响应方法。

点击右下的E会出来一列StackTrace,里面有人物头像的条目使我们自己应用的代码,点击即可进入程序代码!ARC中的内存泄露多半由于强引用循环引起的,点击Leak选择Cycles&Roots菜单项,可以查看引用关系。

事实上,内存泄露是极其复杂的问题,工具使用是一方面,经验是另一方面。提高经验,然后借助工具才是解决内存泄露的根本。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容