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

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

推荐阅读更多精彩内容

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