Xcode8调试黑科技:Debug Memory Graph

Xcode8的调试技能又增加了一个黑科技:Debug Memory Graph。简单的说就是可以在运行时将内存中的对象生成一张图。它可以方便快捷的定位出内存泄漏问题,是iOS开发者的福音。

随着技术的不断进步,硬件的不断升级,iOS的内存管理机制早已从MRC升级到ARC,开发者不用过多的
关注内存泄漏问题,苹果系统已经帮大家处理好了绝大部分工作,让大家可以专心的编写逻辑代码。

当你的app功能持续叠加,文件越来越多,包体积越来越大时,如果你没有做好内存处理,那各种页面卡顿,手机使用app发热耗电快,莫名的崩溃问题逐渐暴露出来。

崩溃

崩溃就像是一种急性病,发病快,容易复现,可以快速的定位排除出原因,那解决就很方便了。业内也有很多的强大的崩溃日志捕获工具,比如bugly、友盟SDK、Google Analytics等等,可以帮助开发者快速定位分析。这块网上有丰富的资料,不再细述。

内存泄漏

而内存泄漏就像是慢性病,当内存泄漏时,程序不会立即崩溃,它会慢慢的侵蚀设备的内存,影响用户的体验,折磨用户的内心。当内存全部侵蚀完,就会执行内存警告方法,app回到初始状态。这个体验是非常糟糕的。

比如我们项目中因为各种原因导致的内存泄漏,原因可能是
1、NSTimer的使用不当
2、Block的循环引用
3、通知没有移除

这些内存泄漏导致的隐患不是马上就能发现的,很多程序员不能及时发现,这是很危险的,因为他不崩溃,也不报错,特殊情况下才能发现。

内存泄漏怎么治呢?

原先常见的方法:
1、通过静态检查工具,检查一些语法问题。只能检查一部分简单的潜在语法问题,许多动态运行的内存问题是检查不出来的。
2、通过人工代码code review,持续进行优化重构。比较耗时耗力,但这个工作不能不做,好的代码不仅是给机器看的,更是给人看的。
3、对一些卡顿、厚重的页面、类进行dealloc检查。体力劳动比较耗时。还有很多小的变量、闭包内存泄漏问题不能发现。

Debug Memory Graph

调试内存图横空出世,解决了这一难题,为什么,因为你只需要点一下这个图标,就可以很直观的看到哪个VC还没有释放,这样的调试界面更人性化了,让我们苦逼的程序员用肉眼很直观的看到内存图。Debug Memory Graph 操作超级简单,结果快速高效,问题清晰了然。

操作步骤:

1、运行你的程序,把自己的页面、功能全部跑一遍。
2、点击控制台工具栏。

D051CAFB-7B05-4021-846C-351512FB51AB.png

3、立即生成内存截图。

BAA118C4-B200-44DE-8652-6B7866CADB0B.png
9DF096FD-07C2-4EAE-B774-3C9E4BE90325.png

4、有紫色感叹号,表示有内存泄漏。(有紫色感叹号不一定泄漏,没有姿色感叹号可能存在泄漏。)

9DF096FD-07C2-4EAE-B774-3C9E4BE90325.png

5、有些实例虽然没有显示感叹号,但是如果存在多份,也表示不能及时释放。可能产生内存高峰,潜在威胁。

6、没有感叹号,也可能存在内存泄漏!

D051CAFB-7B05-4021-846C-351512FB51AB.png

代码示例

总结

Debug Memory Graph工具强大,操作方便,可以快速的定位出内存泄漏问题。但也有一些缺点,工具只是辅助手段,
经常会出现误报、漏报的情况。有姿色感叹号,不一定泄漏,没有姿色感叹号,也可能存在泄漏。不管怎么说,这也是苹果的一大进步,可以提高开发者定位分析的效率。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,386评论 25 707
  • 剑未配好,出门已是江湖。 最近一直没有更新简书是因为在开发和测试阶段,有任务,没有进行学习,不过在做任务的时...
    和珏猫阅读 8,121评论 9 75
  • 1.深深感恩当我躺在瑜伽垫上做大休息的时候,心里想要抱怨表姐每天的食物都太简单了,突然想起来格西老师讲的厨房里的两...
    柔光宝宝阅读 143评论 0 0
  • 我不是个足够有耐心的人,虽然喜爱读书,但对于如《飘》般大部头还是望而生畏的。但是在近日于图书馆看到它的本尊之后,我...
    鲸鲨阅读 457评论 4 3
  • “扪心自问,如果你是别人,你愿意和自己搞对象么?” “想都不敢想,哪有这种福气!” 朋友圈抄来的段子,正版勿怪...
    李乐晨阅读 173评论 0 0