iOS使用Xcode Memory Graph Debugger检测内存泄露

原文iOS — Identifying Memory Leaks using the Xcode Memory Graph Debugger

这篇文章主要介绍

  • 什么是Xcode memory graph debugger
  • 怎样使用及一些tips
  • 优缺点

What is it

长话短说, memory graph debugger回答了为什么一个对象存在内存中?

Xcode memory graph debugger可以帮助找到和修复循环引用与内存泄露。当被激活时,会暂停app运行,展现当前堆中的对象,对象的关系,对象间的引用。

How to use it

3个步骤检查循环引用和内存泄露

  • 在Xcode scheme editor中选中stack logging integration,如图
Enable Malloc stack logging for live allocations
  • 执行你想要分析的app,通过点击如下按钮进入memory graph debugging模式:
The memory graph debugging button
  • memory graph debugging会暂停app运行并展示如图:
Xcode memory graph debugging mode

左边展示app堆中的内容

选中一个实例可以在中间展现实例的引用

选中中间的实例可以生成对象的内存信息,内存泄露信息如下:

Leaks displayed in the debug navigator

Tips

  • 为了确定内存泄露,我们可以通过如图方法选择堆内容仅仅展示泄露
Filtering for memory leaks
  • 运行时信息是有用的,可以展示全部泄露数
Lots of (apparent) memory leaks

The good and the bad

  • 优点:可以轻松地找到一些简单的泄露,比如循环引用。例如一个对象在闭包中持有自己,通过闭包捕获列表可以轻易修复内存泄露。
  • 缺点:可能找不到已经泄露的点。比如,创建一个UIButton对象并在上面天津一个UIToolBars items数组,我们只能看到这发生了内存泄露却看不到为什么泄露。

Useful links

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

推荐阅读更多精彩内容

  • XCode使用一:Xcode基本操作 传送至原文地址 1.Xcode IDE概览 说明:从左到右,依次是“导航窗格...
    无名小鱼会吐火阅读 29,692评论 0 23
  • 【转载】曾梦想仗剑走天涯 1.Xcode IDE概览 说明:从左到右,依次是“导航窗格(Navigator)->边...
    06a6a973d7ab阅读 3,923评论 2 20
  • 1.Xcode IDE概览 说明:从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点...
    小地阅读 5,404评论 0 9
  • 剑未配好,出门已是江湖。 最近一直没有更新简书是因为在开发和测试阶段,有任务,没有进行学习,不过在做任务的时...
    和珏猫阅读 8,281评论 9 75
  • 就是这样,懒惰的不想做事情,一件事拖了又拖,直到
    葛米阅读 151评论 0 0