ACCESSiOS 使用Instruments的工具小结

使用Instruments的工具

iOSXcodeInstrumentsInstruments是一个合法提供的劲的性调试工具集。

ACCESS 1

 

 

1.Blank(空模板):创建一个拖欠的模版,可以由Library库中上加其余模板;

2.Activity Monitor(活动监视器):监控进程的CPU,内存,磁盘,网络使用状态
是程序于大哥大运行真正占据的内存大小

3.Allocations(内存分配):跟踪过程的匿名虚拟内存和堆的目标提供类名和可选保留/释放历史;

4.Cocoa Layout
相NSLayoutConstraint对象的更动,帮助我们判断什么时间啊地方的constraint是否站得住

5.Core Animation(图形性能)这个模块显示程序显卡性能与CPU使用状态

6.CoreData 这个模块跟踪Core Data文件系统活动

7.Counters 采访使用时间或者基于事件之取样方式的性能监控计数器(PMC)事件

8.Energy Log  耗电量监控

9.File Activity 检测文件创建,移动,变化,删除等

10.Leaks(泄漏):一般的办法内存以情况,检查泄漏的内存,并提供了有移动之分配与泄露模块的类对象分配统计信息以及内存地址历史记录;

11.Metal System Trace (Metal API是apple
2014年当ios平台达成出的迅猛底层的3D图形API,它经过压缩驱动层的API调用CPU的耗费提高渲染效率。

12.Network 用链接工具分析你的程序如何利用TCP/IP和UDP/IP链接

13.OpenGL ES Analysis 斯模块测量分析OpenGL
ES活动是检测与表现问题,提供解决建议

14.System Trace
系统跟,通过展示当前深受调度线程提供综合的网表现,显示从用户到系统的转移代码通过简单只体系调用或内存操作

15.System Usage 是模板记录关于文件读写,sockets,I/O系统活动,
输入输出

16.Time
Profiler(时间探查):执行针对系的CPU上运行的历程没有负载时间吗根基采样。

17.Zombies 
测一般的内存以,专注让检测过度释放的野指针对象,也提供靶分配统计,以及主动分配的内存地址历史

常用的生

Leaks,Zombies,Core Animation,Time
Profiler,Cocoa Layout,Energy Log,Network

一.Core
Animation:

由此联调真机,可以洞察到运行时每秒绘制了不怎么帧(60轴封顶,30轴以下可以感觉到卡顿越低越要优化):

1.选中Color Blended Layers,
可以得界面的瑞绿分布,其中红色的吧透明有,红色部分越来越多对性影响尤为充分。

2.监测离屏渲染:

Color Offscreen-Rendered Yellow
Color Hits Green and Misses Red
ACCESS 2

 

圈一下淘宝的 

ACCESS 3

Xcode8.3.2 的于下面

ACCESS 4

 

二.性能监督计数器Counters

(CPU Samples
操作是会见愈,不操作时低切稳定,边玩手机边察看,可以看得到CPU的name ) 

ACCESS 5

三,Energy Log

耗电量监控 (可以见见手机的WiFi状态,蓝牙状态等等)

ACCESS 6

四,Leaks

Leaks一个过程占用的内存空间,包括5种植数据区:

(1)BSS段:通常存放未初始化的全局变量

(2)数据段:通常存放已初始化的全局变量

(3)代码段:存放程序执行代码

(4)堆:存放进程运行面临叫动态分配的内存段,如OC对象相当

(5)栈:由编译器自动分配释放,存放函数参数,局部变量等

Analyze-静态分析

检测出底大面积的老三种植泄露

(1).创建了靶没使用。

(2).创建了靶,且初始化了,但初始化的价值一直没读取了。

Value store to ‘X’during its initialization is never.

(3).Potential leak of an object stored into ‘XX’* 。
翻译一下:XX对象的内存单元有神秘的透漏风险。

   product ——>
Analyze就足以开展静态的内存分析了(或者鼠标左键长安运行按钮的右侧下比赛切换至Analyze模式)

ACCESS 7

ACCESS 8

Allocations是检测程序运行过程遭到之内存分配情况的。模板被一个受(分配)Allocations,以及一个深受名VM
Tracker(虚拟机跟踪)。

Allocations可以辅助我们查阅全局内存以状况(Overall Memory Use):
从大局的角度监测应用程序的内存以情况,捕捉非预期的或特大的内存增长。

内存泄漏使用Leaks检测,如果目标有内存泄漏,detail panel
中会相目标的retain
release历史记录,如果无对象有内存泄漏,就见面见到malloc和free的调用历史。

1.选中Leaks Checks,在Details所在栏中精选CallTree

2.Call
Tree会让我们大体的岗位,有时候会给咱可靠的职位,选中出现内存泄漏的区域,缩小范围,筛选数据。

3.还在右侧下 Display Settings 中勾选 Invert Call Tree 和 Hide System
Libraries 或其它选项可以过滤显示的多寡。

4.以导航栏的筛选框中,我们可以输入关键字来罗数据。

5.双击人头就得进对应得函数进行调优

ACCESS 9

五,Time
Profiler

当点击Time Profiler应用程序开始运行后. 就可知取到总体应用程序运行
消耗时间分布 和 百分叉比.

以前须知

1.Time Profiler..:

,,MacMacCPUiOSMacGPUiOSCPUGPUGPUCAEAGLLayerOpenGL. .

  1. .

在揭示环境从包之上,编译器会引入一多样加强性能的优化,例如去丢调试符号或者移除并再度组织代码.另iOS引入一栽”Watch
Dog”[看门狗]机制.

不同之现象下,“看门狗”会监测应用的习性。如果过量了该场景所规定的运转时刻,“看门狗”就见面强制终结这个应用之进程.

开发者可以crashlog看到相应的日志.但Xcode在调试配置下会禁用”Watch Dog”.

ACCESS 10

ACCESS 11

六、查找野指针
Zombies(没怎么用)

当被ARC后,可以很充分程度及避免产生EXC_BAD_ACCESS错误,但也是出出现或的,比如非NSObject对象的发的野指针。

1.使Zombies工具,启动Zombies后以其间装了NSZombieEnabled为True。

启用了NSZombieEnabled的语句,它会用一个僵尸来替换默认的dealloc实现,也就算是于援计数降到0时,该僵尸实现会晤将拖欠目标转换成为僵尸对象。

僵尸对象的意是在您望她发送信息时,就无见面向前面那么Crash或者出
一个不便理解的所作所为,而是放出一个左信息,它见面显得平段子日志并自行跳入调试器,

因此我们就算可以找到切实可行或大概是哪个目标为错误的假释了。

差不多通过翻看Zombies工具为起之音讯寻找有错误代码行是比较简单的,Zombies也惟有在产生EXC_BAD_ACCESS错误时才发因此。

ACCESS 12

 

 

 参考:

http://www.jianshu.com/p/8dfc477e9d70

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

http://www.jianshu.com/p/2ed69864ea02 

http://www.cocoachina.com/ios/20161206/18306.html 

合法证实https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/index.html#//apple_ref/doc/uid/TP40004652-CH3-SW1

相关文章