前言
在项目中,直接面向用户的客户端往往是一个项目的门面。因此,在项目开发建设的过程中,为了交付用户体验较佳的客户端App,保障产品交付质量。往往需要我们开发者关注客户端软件的性能指标问题。因此,我们要对应用的性能优化专题有所研究!!
我们通常关注的性能指标有:
页面卡顿耗电、发热网络优化应用启动安装包瘦身等
我们在开发建设项目过程中,可以粗略划分为几个阶段:开发阶段、测试阶段、维护阶段:
- 在
开发阶段,我们要掌握性能调试、性能监测的手段,从而保障,在当前稳定版本的客户端软件,有一个比较合理的性能保障; - 在
测试阶段,测试团队等若干同事往往会给我们提出一些用户体验上的反馈和建议,因此,我们需要掌握性能调试的手段,从而改造出比较符合团队要求的产品; - 在上线
维护阶段,针对已经上线的应用,我们的开发团队要有线上性能监控的能力,从而及时收集不满足性能指标要求的业务交互场景和步骤,捕获具体问题进行分析,从而以此为依据作为有效迭代优化我们客户端的有力助力。
为此,我们本次将会用几篇文章,围绕一些常见的性能指标,去关注 如何调试、如何监测、如何改进处理问题:
- Instruments
- 其它性能指标的关注
一、概述
本文主要是针对 开发阶段 、测试阶段 这两个线下场景,围绕常见的几个性能指标要点:页面卡顿、离屏渲染、耗电优化、内存泄露、App启动优化,展开来陈述如何利用Instruments工具进行性能调试的。关于相关的同一主题的其它要点,我们会在其它文章,用新的篇幅进行讨论。
二、 Instruments工具
我们前面通过一篇文章简答介绍了Instruments这个苹果官方自带的调试工具,若本篇文章是您阅读我的第一篇文章,且您对Instruments了解甚少,可以先阅读我的这篇文章先对该工具有基本的认识:Instrument简单介绍
我们通常可以右击Xcode打开Instruments工具: Xcode->Open Developer Tool->Instruments
我们还可以在Xcode打开项目的前提下,通过以下两个方式打开
Instruments:
- 按下两个键:
Command + I打开Instrument; - 或者点击:Xcode->product->profile;
三、Leaks工具
Leaks 工具是用来检查内存泄露的.
3.1 前知识-app 的内存分类
一个 app 的内存分三类:
- (1)、
Leaked memory: Memory unreferenced by your application that cannot be used again or freed (also detectable by using the Leaks instrument). - (2)、
Abandoned memory: Memory still referenced by your application that has no useful purpose. - (3)、
Cached memory: Memory still referenced by your application that might be used again for better performance.
- 其中
Leaked memory和Abandoned memory都属于应该释放而没释放的内存,都是内存泄露。- 而
Leaks工具只负责检测Leaked memory,而不管Abandoned memory;- 在 MRC 时代 Leaked memory 很常见,因为很容易忘了调用 release;
- 在 ARC 时代更常见的内存泄露是循环引用导致的
Abandoned memory,Leaks工具查不出这类内存泄露,应用有限
四、设置leaks
设置Leaks内选项 选择Leaks, 选择Call Tree
五、运行
设置Call Tree 选择Invert Call Tree , Hide system Libraries, 然后选择Leaks的项目 Target为你运行中的App, 点击红色圆圈运行,操作你App, 有红色的叉就代表有内存泄露,查看相应的代码,解决泄露问题;
双击定位,如图:
总结
本文 简单介绍了 项目 性能调试工具 Instruments 的基本使用,目前只对Leaks调试这一块 做了简单介绍 。
接下来会用几篇文章,围绕几个常见的性能问题,展开对 性能调试工具 Instrument 的 其它模块的使用介绍
相关系列文章
Instruments