iOS 使用Instruments的工具小结

使用Instruments的工具

iOSXcodeInstrumentsInstruments是一个官方提供的强的性能调试工具集。

图片 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
图片 2

 

在押一下淘宝的 

图片 3

Xcode8.3.2 的于下面

图片 4

 

二.性能监督计数器Counters

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

图片 5

三,Energy Log

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

图片 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模式)

图片 7

图片 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.双击人头就可进入对应得函数进行调优

图片 9

五,Time
Profiler

当点击Time Profiler应用程序开始运行后. 就会博得到方方面面应用程序运行
消耗时间分布 和 百区划比.

使用前须知

1.Time Profiler..:

,,MacMacCPUiOSMacGPUiOSCPUGPUGPUCAEAGLLayerOpenGL. .

  1. .

于公布环境从包之上,编译器会引入一层层加强性能的优化,例如去丢调试符号或者移除并重新组织代码.另iOS引入一种植”Watch
Dog”[看门狗]机制.

不同的状况下,“看门狗”会监测用的性能。如果盖了该场景所规定之周转时,“看门狗”就见面强制终结这个利用的进程.

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

图片 10

图片 11

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

于打开ARC后,可以非常特别程度上避免产生EXC_BAD_ACCESS错误,但为是发出起或许的,比如非NSObject对象的起的野指针。

1.利用Zombies工具,启动Zombies后在内部安装了NSZombieEnabled为True。

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

僵尸对象的意是当您为它们发送信息时,就未见面向前面那样Crash或者发生
一个麻烦明白的行事,而是放出一个误信息,它见面来得平段子日志并自行跳入调试器,

因此我们就算可以找到切实可行要大概是谁目标被误的放飞了。

基本上通过翻看Zombies工具被出的信寻找有错误代码行是比较简单的,Zombies也惟有以产生EXC_BAD_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

相关文章