以Profile运行APP
有2种启动方式:
启动后需要选择分析模板,这里我们采用Leaks,用来排查内存泄露:
当然你也可以从Profile in Instrucments
进入:
Instrucments界面
启动Instrucments后,需要打开recording
,这样app就能启动了,同时instrucments也开始了追踪。
主要有2大功能:
- Allocations: 查看内存分配情况
- All Heap: 所有的堆栈分配情况
- Anonymous VM: 虚拟内存分配情况
- Leaks:内存泄露情况
Allocations
左上角可以切换子功能
Statisitcs:统计
- category:类型
- Persistent(持久): 内存中的Object使用的内存大小
# Persistent
: 数量,类似其他语法中的lenth函数
- Transient(转瞬即逝):释放的内存大小
# Transient
:数量
Call Trees:调用顺序
可以通过下边的Call Tree
过滤、调整显示顺序等,方便检索查看
Allocations List:分配列表
Generations:用来对比2个时刻的差异
底部菜单
设置需要记录哪些Allocation
- Mark Generation:和
Generations
配合使用
- All Allocations:所有的
- Created & Persistent:创建且存活的
- Created & Destroyed:创建且被销毁的
- All Heap Allocations:所有的堆栈情况
- All VM Regions:所有的虚拟内存区域
Leaks
红×
表示内存泄露,这里会提示发生内存泄露的数量,不是这里发生了内存泄露,感觉Leaks会定时检测,给出的是距离上次检测的结果。
- 当我们点击Leaks时,底部统计的是当前所有的
Leaks
- 当我们框选区域时,底部统计的是区域内的
Leaks
统计信息非常详细,Responsible Frame
里面有时会只显示内存地址,解决办法是debug时要选择 dwarf with dSYM File.