INSTRUMENTS调试工具的使用(四)

版本记录

版本号 时间
V1.0 2017.06.22

前言

我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个很好的检查工具,可以检测内存泄漏。还可以查看哪一个方法比较耗时。还可以检测离屏渲染等等,随后的几篇我们就说一下这个工具的使用。感兴趣的可以看这几篇。
1.INSTRUMENTS调试工具的使用(一)
2.INSTRUMENTS调试工具的使用(二)
3.INSTRUMENTS调试工具的使用(三)
这一篇就先说一下查看数据的工具以及内存分配

八、查看数据工具

前面我们已经说过,每个跟踪文档都包含了以下接口元素:

  • 跟踪面板(Track pane)
  • 详细面板(Detail pane)
  • 扩展详细面板(Extended Detail pane)
  • 运行浏览器(Run Browser)

这里的每个控件显示的都是你跟踪文档里面相同的数据。它们只是以不同的方式 显示而已,关于每个数据点从高级的预览到详细的信息等。这样可以让你以不同的方 式来查看你的数据。你可以通过查看高级的数据来分析变化趋势,然后查看详细的数 据来确定在你的代码中将要发生的事情和制定关于如何解决潜在问题的思路。

1. 跟踪面板

跟踪面板是跟踪文档窗口里面最突出的部分。跟踪面板紧接于 instruments 面板 的右边。该面板为每个 instrument 工具 供了收集数据的一个高级图形视图。你可以使用该面板来核查你从每个 instrument 工具收集到的数据,并可以选择你想进一 步研究的区域。

跟踪面板中的自然图形可以让你更容易的发现你程序的趋势和潜在的问题。比 如,图形中一个内存使用的尖峰信息意味着在该地方你的程序分配的内存比平时更 多。该尖峰信息可能是正常的,也可能是意味你的代码比你预计在此地方创建了更多 的对象或内存缓冲区。一个 instrument 工具(例如 Spin Monitor instrument)也 同样可以指出你程序反应迟钝的地方。如果 Spin Monitor 的图形相对是空白的,你 就知道你的程序是正常响应,但如果该图形不空白,那么你可能需要核查为什么会出 现这样的情况。

2. 详细面板

  详细面板一般在界面的下边,通过它可以很好的跟踪数据。可以通过下面方式打开详细面板。

打开详细面板
详细面板展示

当详细信息很多的时候,我们还可以搜索关键词来找到想要的信息,如下图所示。

详细信息搜索

3. 扩展详细面板

  对于部分 instruments 工具,扩展详细面板显示了当前在详细面板里面所选择的 项目的额外信息。你可以执行以下任一操作来打开和关闭扩展详细面板。

  • 通过菜单栏,如下图所示。
菜单栏打开
  • 通过下面的快捷键展开扩展面板,如下图所示。
快捷键展开扩展面板

九、使用Allocations Instrument工具分析数据

  Allocations instrument 工具是一个跟踪所有由应用程序分配的内存的工具。所以你可以使用那些信息来识别在你应用程序里面的内存分配模式,并识别你的应用程序内存效率低下的地方。

  因为它跟踪整个应用程序生命周期的内存分配,你必须从 Instruments 应用里面 加载你的程序以便 Allocations instrument 工具可以收集它所需要的数据。在加载 的时候,Allocations instrument 使用系统中已有的挂钩(hooks)来记录与你应用程 序中分配和释放事件相关的信息,无论这些事件起源于系统标准分配入口还是你自己 自定义的分配库。随着数据流的到来,instrument 更新并实时的向你显示内存是如 何被分配的。

  Allocations instrument 可以工作在使用标准分配函数(如 malloc,calloc 或 free)的应用程序,而且也也可以工作在使用垃圾回收(garbage collected)的应用 程序上面。后一种情况,收集器依然调用 free 来释放 GC-aware(GC 感知)内存。 Allocations instrument 同样可以在构建在分配内存之上的例程里面工作,包括 Core Foundation 和 Cocoa 的内存分配例程。

分析对象分配的数据

  Allocation instrument 工具的目的是为你显示你的应用程序如何使用内存。内存是系统重要的资源,你应该明智的使用它。每个内存分配都包含了直接成本和潜在 的长期成本。直接成本就是它分配内存所消耗的时间,包括创建新的虚拟内存页面和 把它们映射到物理内存上面。它也有可能包括把陈旧的内存页面写入硬盘。而从长远 来看,保持块状的物理内存可能触发系统额外的页面,这和其他页面操作一样可能对 系统性能损耗很大。和所有工具一样,Allocation 工具开始的地方也是跟踪面板。默认配置下,跟踪 面板图形化你当前应用程序使用内存数量的净额。使用 instrument 的检查器,你可 以修改视图让它显示分配的密度,即内存分配发生的地方,或你也可以让它显示堆栈的深度。分配密度图可以让你查看在你程序里面内存分配发生的频率。分配密度的尖峰意味着潜在的瓶颈,而你可以通过预先分配块或减少对其他块的依赖来减缓该情况。

跟踪引用数的事件

  当你把 Allocations instrument 添加到你的文档里面的时候,它的初始化配置是只记录内存的分配和释放的事件。默认情况下,它不会记录引用数的事件,比如 CFRetain 和 CFRelease 的调用。原因是记录引用数的事件会给从进程里面收集数据 增加了额外的开销,而且在大部情况是不需要的。然而如果你的代码发生内存泄露, 你可能想要配置 Allocations instrument 来记录这些事件作为你努力追查泄露的一 部分。特别是,你可以查看任何不匹配的 retain 和 release 的事件来查看一个对象 是否最后引用被删除了而它仍然保留着。

下面就是我的一个工程的内存分配。

内存分配

后记

未完,待续~~~

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

推荐阅读更多精彩内容

  • 版本记录 前言 我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个...
    刀客传奇阅读 1,754评论 0 1
  • 版本记录 前言 我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个...
    刀客传奇阅读 2,353评论 0 0
  • Android 中build.gradle文件是两个 app/build.gradle project/build...
    一s独秀阅读 485评论 0 1
  • 今天下午的课程收获很多,做了什么题目,学到什么知识,现在总结在下面:(马上就结束自己的大学课程了,再也不能坐在教室...
    蒙淘克阅读 431评论 0 8
  • 2018年12月3日 星期一 多云 我的孩子是因为懒惰而作业拖拉,因粗心而差错不断,因“玩心”太重而注...
    嫑忈嘦怹_068e阅读 80评论 0 1