iOS使用Instruments的工具

使用Instruments的工具

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

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

看一下淘宝的

二.性能监控计数器Counters

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

三,Energy Log

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

四,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模式)

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

五,Time Profiler

当点击Time Profiler应用程序开始运行后. 就能获取到整个应用程序运行 消耗时间分布 和 百分比.

使用前须知

1.Time Profiler..:

,,MacMacCPUiOSMacGPUiOSCPUGPUGPUCAEAGLLayerOpenGL. .

2. .

在发布环境打包的时候,编译器会引入一系列提高性能的优化,例如去掉调试符号或者移除并重新组织代码.另iOS引入一种"Watch Dog"[看门狗]机制.

不同的场景下,“看门狗”会监测应用的性能。如果超出了该场景所规定的运行时间,“看门狗”就会强制终结这个应用的进程.

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

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

在开启ARC后,可以很大程度上避免产生EXC_BAD_ACCESS错误,但也是有出现可能的,比如非NSObject对象的产生的野指针。

1.使用Zombies工具,启动Zombies后在内部设置了NSZombieEnabled为True。

启用了NSZombieEnabled的话,它会用一个僵尸来替换默认的dealloc实现,也就是在引用计数降到0时,该僵尸实现会将该对象转换成僵尸对象。

僵尸对象的作用是在你向它发送消息时,就不会向之前那样Crash或者产生 一个难以理解的行为,而是放出一个错误消息,它会显示一段日志并自动跳入调试器,

因此我们就可以找到具体或者大概是哪个对象被错误的释放了。

基本上通过查看Zombies工具给出的信息找出错误代码行是比较简单的,Zombies也只有在产生EXC_BAD_ACCESS错误时才有用。

参考:

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

时间: 2024-10-27 12:55:40

iOS使用Instruments的工具的相关文章

iOS/OS X 借助工具解决内存问题

InstrumentsARC内存管理悬挂指针 上 一篇博客iOS/OS X内存管理(一):基本概念与原理主要讲了iOS/OSX 内存管理中引用计数和内存管理规则,以及引入ARC新的内存管理机制之后如何选择ownership qualifiers(__strong.__weak.__unsafe_unretained和__autoreleasing)来管理内存.这篇我 们主要关注在实际开发中会遇到哪些内存管理问题,以及如何使用工具来调试和解决. 在往下看之前请下载实例MemoryProblems,

ios性能测试Instruments

Instruments 用户指南 Instruments用户指南介绍 Instruments 是应用程序用来动态跟踪和分析 Mac OS X 和 iOS 代码的实用工具.这是一个灵活而强大的工具,它让你可以跟踪一个或多个进程,并检查收集的数据.这样,Instruments 可以帮你更好的理解应用程序和操作系统的行为. 使用 Instruments 应用,你可以使用特殊的工具(即 instruments 工具)来跟踪同一进程不同方面的行为.你也可以使用该应用来记录一系列用户界面的动作并响应它们,同

0516.32款iOS开发插件和工具介绍[效率]

插件和工具介绍内容均收集于网络,太多了就不一一注明了,在此谢过! 1.Charles 为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析.一个可查看所有HTTP和SSL/HTTPS流量的工具.这款工具对于你测试和服务器端进行交互的应用非常有用 2.xScope xScope带有六种不同的工具,帮助每一个设计者快速.精确的完成工作,这些工具功能灵活.强大,包括∶量

IOS应用开发版本控制工具之Versions使用

Versions版本控制工具破解版(Versions.zip)下载请见本博文附件.下载后在MAC安装完以后,图标是莲花状.见下图: 双击运行如下图:    点击Repository,连接SVN服务器Repository(服务器端采用的是SVN服务端),见下图: 输入所需值,如下图: Location 值要与URL Prefix保持一致,都为SVN Repository 地址,本文中Location 值为https://[email protected]/svn/20121225_wohotel_

多媒体编程——ios视频图像绘制工具类。

IOS上视频级的图像绘制 ios上的图像绘制常规的是 UIView的drawRect函数,但是这个函数是异步触发,并且由主线程执行.虽然可以通过一定技巧达到主动绘制的效果: 1.传递图像给UIView缓存着. 2.然后调用UIView的setNeedDisplay 改写重绘标志. (以上两步是讲图像丢给UIView,让它自己进行绘制,但是绘制的时机不可控,有时候我们需要它马上绘制,甚至有时候我们需要知道它什么时候绘制完成了,就需要下面两步) 3.在播放线程中调用UIView的 perfromOn

iOS开发抓包工具之Charles使用

iOS开发抓包工具之Charles使用 在iOS开发过程中,抓包是常见的必备技能之一.这里我们主要介绍一下Mac下的抓包利器Charles(文中版本:4.0.1).它可以非常方便的抓取Http/Https请求,从而提高我们的开发效率.本文中不提供破解版安装使用说明(网上一大堆),建议使用正版,官方dmg下载地址:点击此处. 一.如何抓取Http请求? (1)安装完成之后打开Charles,设置端口号:8888(端口号可以自定义). 选择"Proxy"菜单下的"Proxy Se

iOS第三管理工具pods

iOS第三管理工具pods的安装与使用步骤如下 1.安装 ----在终端输入代码     sudo gem install cocoapods   (有朋友问要不要配置ruby环境,我说不用配置有xcode就行 )  2.替换 ----替换淘宝的ruby镜像,解决不用翻墙问题         先删除原来的ruby镜像  gem sources –remove https://rubygems.org/ 再安装淘宝的ruby镜像  gem sources –a http://ruby.taobao

iOS平台软件开发工具(一)-新建的工程使用CocoaPods工具集成第三方框架

CocoaPods是一款集合了上千个第三方开源库的开发工具,能够大幅度的提升团队项目的开发效率,降低时间成本. 那么就看一下CocoaPods这个工具在项目中的使用体现吧. 我们马上用ASIHTTPRequest第三方开源框架,说明如何在我们的项目中使用CocoaPods工具快速集成第三方开源框架. 首先,创建一个iOS平台下的空应用程序工程EmptySample. 然后,在终端中进入新建的工程目录,如图所示 结果如图所示. 在新建的工程根目录下,使用vi命令新建Podfile文件.(注意,不用

ios Base64编解码工具类及使用

为了避免明码传递http内容,可以用base64编码后传输,收到方再解码,也方便了2进制数据的字符串式传输. 对于ios来说,google给提供了一个很好的工具类,方便进行base64编解码,当然也可以用openssl来进行,但这东西相对来 说比较麻烦.google给提供了3个文件就够了. 官网地址是: http://code.google.com/p/google-toolbox-for-mac/ 这里面有很多宝贝,如果自己找很难找到这3个文件,所以我加到附件里.解压后放到ios工程中即可使用