[✔️]xcode Instrucments排查app的内存泄露

简介: [✔️]xcode Instrucments排查app的内存泄露

以Profile运行APP


有2种启动方式:


image.png


启动后需要选择分析模板,这里我们采用Leaks,用来排查内存泄露:


image.png


当然你也可以从Profile in Instrucments进入:

image.png


Instrucments界面


启动Instrucments后,需要打开recording,这样app就能启动了,同时instrucments也开始了追踪。


image.png


image.png


image.png


主要有2大功能:


  • Allocations: 查看内存分配情况


  • All Heap: 所有的堆栈分配情况


  • Anonymous VM: 虚拟内存分配情况


  • Leaks:内存泄露情况


Allocations


image.png


左上角可以切换子功能


Statisitcs:统计


image.png


  • category:类型


  • Persistent(持久): 内存中的Object使用的内存大小


  • # Persistent: 数量,类似其他语法中的lenth函数


  • Transient(转瞬即逝):释放的内存大小


  • # Transient:数量


Call Trees:调用顺序


image.png


可以通过下边的Call Tree过滤、调整显示顺序等,方便检索查看


Allocations List:分配列表


Generations:用来对比2个时刻的差异


底部菜单


image.png


设置需要记录哪些Allocation


  • Mark Generation:和Generations配合使用


  • All Allocations:所有的


  • Created & Persistent:创建且存活的


  • Created & Destroyed:创建且被销毁的


image.png


  • All Heap Allocations:所有的堆栈情况


  • All VM Regions:所有的虚拟内存区域


Leaks


image.png


红×表示内存泄露,这里会提示发生内存泄露的数量,不是这里发生了内存泄露,感觉Leaks会定时检测,给出的是距离上次检测的结果。


  • 当我们点击Leaks时,底部统计的是当前所有的Leaks


  • 当我们框选区域时,底部统计的是区域内的Leaks


统计信息非常详细,Responsible Frame里面有时会只显示内存地址,解决办法是debug时要选择 dwarf with dSYM File.


image.png

目录
相关文章
|
1月前
|
Java 数据库连接
Java中的内存泄漏排查与预防方法
Java中的内存泄漏排查与预防方法
|
3月前
|
缓存 移动开发 关系型数据库
Linux 内存 占用较高问题排查
Linux 内存 占用较高问题排查
93 2
|
3月前
|
缓存 Linux
kswapd0内存过高排查经历
kswapd0内存过高排查经历
366 1
|
3月前
|
监控 NoSQL Linux
深入Linux内存泄漏排查:Valgrind与系统工具的联合应用
深入Linux内存泄漏排查:Valgrind与系统工具的联合应用
591 0
|
1月前
|
监控 Java
Java中的内存泄漏分析与排查技巧
Java中的内存泄漏分析与排查技巧
|
1月前
|
存储 监控 算法
LeakCanary 的内存泄露问题排查
LeakCanary 的内存泄露问题排查
39 0
|
4天前
|
JavaScript Java 开发工具
Electron V8排查问题之接近堆内存限制的处理如何解决
Electron V8排查问题之接近堆内存限制的处理如何解决
15 1
|
25天前
|
监控 安全 Java
JVM内存问题之排查Direct Memory泄漏有哪些常用方法
JVM内存问题之排查Direct Memory泄漏有哪些常用方法
|
26天前
|
监控 Java Linux
JVM内存问题之如果堆内存一直缓慢上涨,如何解决
JVM内存问题之如果堆内存一直缓慢上涨,如何解决
|
4天前
|
搜索推荐 Java API
Electron V8排查问题之分析 node-memwatch 提供的堆内存差异信息来定位内存泄漏对象如何解决
Electron V8排查问题之分析 node-memwatch 提供的堆内存差异信息来定位内存泄漏对象如何解决
5 0