iOS开发内存管理之番外篇

三. Instruments 工具

Instruments工具可谓是神兵利器了, 功用很强劲,
可谓是我们每个程序员”居家生活的好援手”.
以下重点讲解使用Instruments调试内存泄露和巡回引用的问题.

  1. 打开Instruments

很粗略两步, 然后就会面到它的主界面

分选leaks –> 点击左上角的大红点 –> 这一个时候就起来检测了 (
这么些时候模拟器也会运作起来, 切记一定在模拟器中对你的眼前先后开展操作,
以便检测 ) –> 等待检测截止....

检测过程中假使出现肉色的线, 就印证内存泄露, 如下图

只要要检测循环引用, 就分选Cycles & Roots,
就足以见见以图片形式显示出来的循环引用了.

设若要翻开内存泄露, 拔取Call Tree

勾选上左侧革命方框里的两项, Invert Call Tree 和Hide System Libraries

这会儿内存泄露的实际代码找到了,你只在黑色框里的法子上双击,就会跳转到具体的代码,
一针见血.

享受使人欢喜, 分享使人进化

http://www.jianshu.com/p/db3c404c7067

****** 以上基于Xcode6.1.1 ******

参照的篇章:

  1. 《iOS开发进阶》老师 第十章《了解内存管理》

  2. 《Object-C基础教程》第十章《内存管理》

3.
《OC内存管理》 http://www.cnblogs.com/wendingding/tag/UI基础/

  1. 《IOS开发类别—Objective-C之内存管理》

http://www.cnblogs.com/kenshincui/p/3870325.html

5.
http://blog.csdn.net/totogo2010/article/details/8233565 

6.
《iOS故障排除指南》 http://mobile.51cto.com/iphone-377138.htm

二. 静态分析器 (command + shift + B)

  1. 先是种格局, 直接迅速键, 点击左侧导航栏中的警告栏

  2. 第二种情势, 按下图以此点击

ps…那一个点子有些时候不是专门靠谱, 看情状的呦, 哈哈~

内存管理, What? Why? How? 这都不是本文商量的内容,
因为已经有无数老大好的稿子来分解那一个题材了, 本文将从其余一个角度出发,
教给我们如何调节-解决内存中的问题.
关于What-Why-How本文也会享受部分相比较好的篇章,
对于不知底内存管理的同学会有很大的帮扶.

一. 开启”僵尸形式”   (环境变量)

普普通通情状下,一旦内存中的对象被放走,其只得就此没有。但当“僵尸”方案启动时,该目的只会被标记为“释放”但却照样被保留在内存当中。如此一来,当大家访问某个僵尸对象时,Xcode会提示我们该目的即使可以被访问、但在实际条件中早已不应存在。在这种形式下,大家将可以领悟到健康境况下不可能得到的实时气象与对象地点。

Zombie环境变量对于处理EXC_BAD_ACCESS类型崩溃很得力。
当这些zombie工具被启用未来,即便那些目的被放飞了,那些目的的内存也不会被清理。这么些工具将永远不会释放内存,只是简短标记一下以此内存是不死的(“僵尸”的来历),你说到底将会在某个时候耗尽所有的内存。

开启”僵尸情势”的步子:

次第拔取

勾选上绿色区域, 这样就开启了”僵尸格局”.

内存管理, 一个恒古的话题, 它不是一个简单的问题. 比如说我们会碰着的一部分,
内存莫名的不停提升, 程序莫名的crash, 以及难以察觉的内存泄露等等问题,
都是相比令人揪心的. 但是, 只要大家精通了内存管理的规则, 完全依据, 其实,
内存管理也是很好解决的.

内存管理现在大约可以分为两类, 一类是坚定不移不懈存在的MRC,
一类是Xcode4.2及以上版本有了的机动管理内存, 也就是ARC.
关于MRC和ARC选拔哪一个, @唐巧
<是否应该利用ARC?>作品已经有了很详细的探究. 

相关文章