首页 > 其他分享 >Instruments中常用Template的使用

Instruments中常用Template的使用

时间:2023-06-19 17:25:02浏览次数:35  
标签:常用 调用 Instruments Tree Call 内存 Template 虚拟内存

 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

相关文章

  • 使用NamedParameterJdbcTemplate指定命名参数
    在本文中,我们将介绍如何在连接到后端Postgres数据库的Spring启动应用程序中使用NamedParameterJdbcTemplate。我们将使用NamedParameterJdbcTemplate从PostgresDB插入,更新和删除员工。为了保持设计的合理性,我将dao,service和controller分开了。服务只是本文的一个转折点。概观Named......
  • Js_最常用的55个经典技巧
     1.οncοntextmenu="window.event.returnValue=false"将彻底屏蔽鼠标右键<tableborderοncοntextmenu=return(false)><td>no</table>可用于Table2.<bodyonselectstart="returnfalse">取消选取、防止复制3.οnpaste="returnfalse"......
  • vite+vue3项目中使用 lottie 动画,如何在 template 中直接使用本地 json 文件路径
    安装lottie-webyarnaddlottie-web封装 lottie组件<template><divref="animation":style="{width,height}"></div></template><script>import{defineComponent,ref,onMounted}from'vue'......
  • 代码如何连接数据库?常用的方式有几种?
    在现代应用程序开发中,与数据库的交互是非常重要的一步。要想使用数据库,我们需要对应的编程语言提供的库或框架来实现数据库的连接和交互。本文将从几个方面介绍代码如何连接数据库,并详细介绍常用的方式。一、什么是数据库连接?数据库连接是指应用程序通过特定的接口与一个或多个数据......
  • kafka常用命令
    转 https://www.cnblogs.com/xgss/articles/16580433.html 1启动zookeeperbin/zookeeper-server-start.shconfig/zookeeper.properties 2启动kafkabin/kafka-server-start.shconfig/server.properties多个kafka的话,在各个虚拟机上运行kafka启动命令多次即......
  • MongoDB常用28条查询语句
    MongoDB常用28条查询语句1查询所有记录db.userInfo.find();相当于:select*fromuserInfo;默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”,但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize=50;......
  • template - function parameter - type
    #include<iostream>#include<thread>#include<array>#include<functional>template<autofunc,std::size_tI>structparam_type;template<typenameRet,typename...Args,Ret(*func)(Args...),std::size_tI>struct......
  • js数组常用的方法
    在JavaScript中,数组是一种非常重要的数据类型。数组提供了一系列常用的方法,可以方便地对数组进行操作和处理。本文将介绍JavaScript中几种常用的数组方法的含义、返回值以及是否改变原数组。一、push()push()方法可以将一个或多个元素添加到数组的末尾,并返回数组的新长度。例如:......
  • 10个ai算法常用库java版
    根据AI项目的具体需求,可以选择最合适的库或框架,并开始尝试使用不同的算法来构建AI解决方案。1.Deeplearning4j 它是一个用于Java和Scala的开源分布式深度学习库。Deeplearning4j支持各种深度学习架构,包括卷积神经网络(CNN)、递归神经网络(RNN)和深度信念网络(DBN......
  • Git常用命令
    1.gitremote关联远端仓库[email protected]:git_username/repository_name.gitgitremoteremoveorigingitremote-v2.gitbranch本地分支关联远程分支(目的是在执行gitpull/push操作时就不需要指定对应的远程分支)gitbranch--set-upstream-to=......