3

Instruments中常用Template的使用 - 滴水微澜

 11 months ago
source link: https://www.cnblogs.com/zhou--fei/p/17491580.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Instruments中常用Template的使用

 Instruments是苹果提供的Xcode套件,可用于分析iOS,MacOS程序的性能数据,进行性能提升。Instruments提供了很多类型的Template,用于特定场景的分析。这里选了3种常用的Template进行使用方法的讲解,对于其他Template的用法则用到时再了解吧,没必要一次把所有的类型都学习一遍。
讲解的Template有:
1.Time Profiler
2.Allocations
3.Leaks
Time耗时分析
在时间轴中拖拽两个begin-end线,分享这2根线之间的方法调用。
826860-20230619164838255-476338966.png
详情面板设置
Call Tree设置
通常筛选常见开启的配置方式:
Separate by Thread:按线程分割
Invert Call Tree:倒置调用栈
Hide System Libraries:隐藏系统库
其他按需开启
Separate by State:按状态分割
Flatten Recursion:平铺递归
Top Fuctions:顶部方法,没看出有啥作用。
单击Profile详情面板中的使用每行符号右侧的箭头,进入到当前方法内的详细调用和时间占用。
Heavlest Stack Trace操作
双击右侧Heavlest Stack Trace下的调用符号,进入到源码中方法调用的位置。
Allocations内存使用分析
826860-20230619165322487-2075772467.png

概念解释

all-heap-allocations:所有堆内存分配
all-anonymous-VM:所有的虚拟内存分配
堆分配和虚拟内存分配是两回事
当应用程序启动时,操作系统为其分配一块虚拟内存块。当应用程序分配内存时,操作系统会从已经预留好的虚拟内存块中分配内存
应用程序不能控制匿名虚拟内存的大小,但可以通过优化堆分配来减少内存使用。
# Persistent: 当前内存中正在存活的对象个数
# Transient: 在内存中使用完成后,已经被销毁的对象个数
# Total: 当前存活的+已经销毁的 总个数
Persistent: 当前内存中正在存活的对象所占用的内存大小
Total Bytes: 当前存活的+已经销毁的 对象所使用的内存总大小
Persistent / Total Bytes: 当前存活的与创建对象总数的比值
826860-20230619165518859-1780661145.png
点击Category 下某个item的右箭头,可以查看当前类的所有被创建对象的时间和大小
826860-20230619165527463-788776590.png
Leaks内存泄漏分析
红X表示有内存泄漏,点击红X查看内存泄漏。
826860-20230619165559829-861937718.png
在Leads详情面板,选择Call Tree可以查看方法调用栈。
Call Tree设置
Separate by Thread:按线程分割
Invert Call Tree:倒置调用栈
Hide System Libraries:隐藏系统库
通过Filter筛选工具筛选当前操作的类名,查看出现内存泄漏的方法,点击右侧箭头,进入到当前调用方法内详细查看
双击右侧Heavlest Stack Trace下的调用符号,进入到源码中方法调用的位置。
https://juejin.cn/post/6865102561507672077
http://www.samirchen.com/use-instruments/

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK