作用:
- 追查代码中难以重现的问题。
2)对你的程序进行性能分析。
3)自动化测试你的代码。
4)对你程序进行压力测试
5)进行一般的系统级故障诊断
6)对你的代码如果工作有更深入的了解。
有关的英文解释:
resident size:内存大小。
Dirty Size:脏数据的大小
Swapped Size:交换大小
CoreAnimation的使用:
简介:
是针对试图的优化。
-
设置背景颜色为不透明,为了减少GPU的性能:
1) UILable设置方式:因为如果label的内容是中文,label实际渲染区域要大于label的size,最外层多了一个sublayer,如果不设置第二行label的边缘外层会出现图层混合的红色。
label.backgroundColor = [UIColor whiteColor];
label.layer.maskToBounds = YES
2) UIImageView比较特殊,不进需要这个容器本身是不透明的,并且imageView包含的内容图片也也必须是不透明的。 光栅化:
简介:光栅化是讲一个layer预先渲染成位图,再加入到缓存中,成功被缓存的layer会标注为绿色,没有成功缓存的标注为红色,正确使用光栅可以得到一定程度的性能提升。
例如:内容不变的情况下才使用光栅化,例如阴影。但是如果内容经常变动就不需要光栅会造成性能的浪费。
3.图片颜色格式(Color Copied Images)
如果图片颜色格式是蓝色就说明图片格式是不支持的。
- Color Non-Standard Surface Formats(不标准的表面颜色格式)
- Color Misaligned Images(图片大小)
这个选项帮助我们查看图片大小是否正确显示。如果image size和imagView size不匹配,会消耗资源压缩图片。
6.Color OffScreen-Rendered Yellow(离屏渲染)
简介:
离屏渲染指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。离屏渲染结束以后,再从离屏切到当前屏幕,把离屏渲染结果显示到当前屏幕上,这个操作很耗性能,实际开发中尽可能避免离屏渲染。
会触发离屏渲染的行为:
- drawRect:方法
- layer.shadow
- layer.allowsGroupOpacity or layer.allowsEdgeAntialiasing
- layer.shouldResterize
- layer.mask
- layer.masksToBounds && layer.cornerRadius
Time Profile使用:
Time Profile帮助我们分析代码的执行时间,找出导致程序变慢的原因,告诉我们时间都去哪了?
Leaks工具:
可以帮助我们检测出哪里出现了内存泄漏。
Allocations:
说到内存问题,我们更多的想到内存泄漏和野指针,还有另一种看似不是问题的内存问题,Abandoned Memory(被遗弃的内存)。这类内存有可能由于某些原因被分配,但并非一直需要,只是可能在程序运行期的某个时间需要,如内存缓存的图片,还有一个比较普遍的东西-单例。
使用方法:
在进入某个模块前标记一个Generation,这样会生成一个快照。然后进入、退出再标记一个Generation。
growth表示距离上次mark的增量。