Instruments是苹果提供的Xcode套件,可用于分析iOS,MacOS程序的性能数据,进行性能提升。Instruments提供了很多类型的Template,用于特定场景的分析。这里选了3种常用的Template进行使用方法的讲解,对于其他Template的用法则用到时再了解吧,没必要一次把所有的类型都学习一遍。 讲解的Template有: 1.Time Profiler 2.Allocations 3.Leaks Time耗时分析 在时间轴中拖拽两个begin-end线,分享这2根线之间的方法调用。 详情面板设置 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内存使用分析
概念解释
all-heap-allocations:所有堆内存分配 all-anonymous-VM:所有的虚拟内存分配 堆分配和虚拟内存分配是两回事 当应用程序启动时,操作系统为其分配一块虚拟内存块。当应用程序分配内存时,操作系统会从已经预留好的虚拟内存块中分配内存 应用程序不能控制匿名虚拟内存的大小,但可以通过优化堆分配来减少内存使用。# Persistent: 当前内存中正在存活的对象个数 # Transient: 在内存中使用完成后,已经被销毁的对象个数 # Total: 当前存活的+已经销毁的 总个数 Persistent: 当前内存中正在存活的对象所占用的内存大小 Total Bytes: 当前存活的+已经销毁的 对象所使用的内存总大小 Persistent / Total Bytes: 当前存活的与创建对象总数的比值点击Category 下某个item的右箭头,可以查看当前类的所有被创建对象的时间和大小
Leaks内存泄漏分析 红X表示有内存泄漏,点击红X查看内存泄漏。 在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/ 标签:常用,调用,Instruments,Tree,Call,内存,Template,虚拟内存 From: https://www.cnblogs.com/zhou--fei/p/17491580.html