JProfiler性能分析工具详解

发布时间:2021-11-30 13:52:17

1.简介

JProfiler?是一个商业授权的?Java剖析工具,用于分析Java EE和Java SE应用程序.


2.JVMTI

JDK 本身定义了目标明确并功能完善的JNI( Java Native Interface ) 与虚拟机直接进行交互,这些 API 能很方便的进行扩展,从而满足开发者各式的需求.


JVMTI( JVM Tool Interface) ,是JAVA虚拟机提供的本地接口,它是实现调度器以及其它Java运行测试与分析?工具?的基础.


并不一定在所有的JDK提供商都有实现,但在主流的Oracle JDK、Open JDK上都有其实现.


*?在开发的过程中一般是使用Agent的方式来使用JVMTI,通过调用JVMTI的函数,从JVM中得到当前的运行信息.


3.JProfiler内部模型


4.JProfiler数据采集的原理


1.用户在JProfiler GUI中下达监控命令( 对应用户的一个点击 ).


2.JProfiler GUI通过自身Socket的8849端口向位于JVM的JProfiler Agent发送监控指令.


3.JProfiler Agent收到指令后向JVMTI注册事件或执行相关的命令.


4.JVMTI根据事件和命令的类型返回相对应的数据( 线程状态、对象实例、CPU负荷、GC状态信息等)


5.JProfiler Agent从JVMTI中得到相应数据后将对其进行计算,最终通过Socket传输给JProfiler GUI中进行展示.


5.JProfiler的使用
5.1 安装

https://www.ej-technologies.com/download/jprofiler/files


*?Window操作系统?请安装9.X版本,输入激活码对软件进行激活.


激活码:L-Larry_Lau@163.com#23874-hrwpdp1sh1wrn#0620


*****?Linux操作系统无须激活


5.2 JProfiler与应用进行连接
1 与正在运行的JVM实例进行连接

Select from all local JVMs模式:将扫描本地所有正在运行的JVM实例



Attach to profiled JVM模式:选择本地或远程正在运行的JVM实例,远程被监控的机器一定要预先安装JProfiler.



*****?需指定远程?服务器的JProfiler的通讯端口


2 启动一个新的JVM实例一并连接


*?需要指定程序的启动类( 包含main方法的类 )


3 与Server进行集成( 需与服务捆绑?)

步骤一:Session?>Integration Wizards?>New Server Integration



步骤二:选择应用服务器的类型以及版本号



步骤三:选择与本地或远程服务器的服务进行集成



*****?本文将使用远程服务器模式.


*****?若?选择与远程服务器的服务进行集成则需要选择远程服务器的操作系统类型.


步骤四:选择服务器使用的JVM供应商以及版本号



步骤五:选择JProfiler的启动模式



Wait for JProfiler GUI模式

JVM将等待JProfiler Agent接收到JProfiler GUI发送的配置信息后再进行启动( 即Lauch Type连接模式 ,启动一个新的JVM实例)


Prepare for profling模式

立即启动JVM,稍后再与JProfiler GUI进行连接并向JProfiler Agent发送配置信息(?数据的采集方式、过滤器、触发器等信息?)


*****?若使用此模式则需要让JVM在启动时自动加载JProfiler Agent,因此需要在startup.bat/startup.sh文件中添加命令


startup.bat:set CATALINA_OPTS=-agentpath:{JProfiler安装目录}inwindows-x64jprofilerti.dll=port=8849,nowait %CATALINA_OPTS%


startup.sh:CATALINA_OPTS=-agentpath:/{JProfiler安装目录}/bin/linux-x64/libjprofilerti.so=port=8849,nowait $CATALINA_OPTS


export CATALINA_OPTS


Profile Offine模式

离线分析,JProfiler GUI无法与JProfiler Agent进行连接,因此需要将数据的采集方式、过滤器、触发器等信息打包成config.xml配置文件,在启动该JVM实例时加载JProfiler Agent以及配置文件,使用此模式需要配合triggers触发器使用,当发生指定的事件后触发指定的操作.


*****?若使用此模式则需要让JVM在启动时自动加载JProfiler Agent和context.xml配置文件,因此需要在startup.bat/startup.sh文件中添加命令


startup.bat:set CATALINA_OPTS=-agentpath:{JProfiler安装目录}inwindows-x64jprofilerti.dll=port=8849,nowait,config=C:Users{用户名}.jprofiler9config.xml %CATALINA_OPTS%


startup.sh:CATALINA_OPTS=-agentpath:/{JProfiler安装目录}/bin/linux-x64/libjprofilerti.so=port=8849,config={预定义目录}config.xml $CATALINA_OPTS


export CATALINA_OPTS


步骤六:填写远程服务器的IP地址



步骤七:输入远程服务器中JProfiler的安装目录( 供JProfiler生成脚本时使用 )



步骤八:选择应用服务器的启动脚本,JProfiler会根据选择的启动脚本文件生成一份适用于JProfiler特定启动模式的脚本文件.



*****?最终在本地生成startup_jprofiler.sh文件,需将此文件复制到远程服务器中应用服务器的bin目录并对文件赋予执行的权限,在服务器中直接通过JProfiler提供的startup_jprofiler.sh文件来启动服务.


*****?若使用离线启动模式则还需要将JProfiler生成的context.xml配置文件复制到远程服务器中,然后修改startup_jprofiler.sh文件中JVM加载context.xml文件的路径.


步骤九:设置JProfiler GUI通讯的端口



步骤十:检查配置项



步骤十一:选择数据的采集方式



Instrumentation重构模式

JProfiler将对需要分析的class字节码文件中写入自己的bytecode,?对于正在运行的JVM实例选择此模式将会重新加载字节码文件到JVM的运行时数据区域结构中?.


*****?这是JProfiler全功能模式,在此设置中,调用堆栈信息是准确的,但是CPU开销可能很高( 取决于Filter的控制 ),若要分析的类较多,则对应用的性能产生影响,因此使用此模式一般配合Filter使用,只对特定的类或包进行分析.


Sampling抽样模式

此模式对CPU的开销非常低,但不支持某些功能( 方法的执行次数、执行时间等 ), 这种模式在连接正在运行的JVM实例时更为安全.


步骤十二:选择配置Filter和Trigger



配置Filter( 适用于Instrumentation数据采集模式 )



配置Trigger( 多用在离线的启动模式 )


1.选择触发器的类型



2.选择触发的动作



步骤十三:完成配置,连接JProfiler Agent,对程序进行监控.



*****?每个Session表示一次会话,Session可以通过人工创建 ( New Session ) 或者与服务应用进行集成来产生( Integration Wizards ).


*****?支持将当前JVM实例的运行状态保存为快照( Save Snapshot )并提供快照与快照之间的对比功能.


5.3 视图介绍

Telemetries视图:包含JMM内存的使用情况( 全局堆与非堆、局部伊甸园区、幸存者区、老年代)、GC线程的活动情况( 发生GC的时间,是属于Minor GC还是Full GC )、当前JVM实例的线程概况、CPU的负载等信息.



Live Memory视图:展示当前堆中实例的个数、方法的调用链等信息.



方法调用链信息:



Heap Walker视图:用于堆的快照分析,可以选择在Live Memory中记录的对象或者当前运行状态时堆的对象也可以直接在对象视图右键对象Show Selection In Heap Walker.



CPU Views视图:可以按运行顺序逐级查看当前程序运行时的耗时、在一定时间内统计方法的执行效率.


程序运行耗时:



一定时间内统计方法的执行效率( 单位:微秒 ):



Total Time:执行总时长.


Inv:执行的次数.


Avg Time:方法*均执行时长.


Median Time:第中间次数的执行时长.


Min Time:最短执行时长.


Max Time:最大执行时长.

相关文档

  • 带利息的借条格式怎么写
  • 支付宝余额宝安全吗 怎样保护支付宝余额宝
  • 蓝桥杯(java)个人赛真题:奇妙的数字
  • 折纸盒的方法步骤图解一分钟
  • PHP中几种b2b,用php开发 b2b 用什么架构?
  • 培根哲理散文两篇
  • 古诗人的名言名句
  • 开心消消乐228关怎么过
  • 王者名字女生仙气可爱 撩汉网名
  • 故障转移集群-1
  • 马缨杜鹃的病害防治方法是什么
  • 关于史记的故事人物有哪些
  • 单招会不会考不上
  • 甘肃属于南方还是北方
  • 音乐教学论文摘要
  • Linux学习之路(首次登录部分命令)
  • 美国康涅狄格州儿童博物馆介绍
  • 【JAVA】拦截请求参数并设置请求头
  • shell 脚本判断某个文件是否存在
  • 芦荟可以去除雀斑吗
  • 关于ul li做导航条
  • xdoj单词排序
  • qq黄钻会员通用月卡有什么用怎么用
  • 力扣368. 最大整除子集
  • 组织部教育实践活动整改方案
  • 2020公共艺术专业大学排名
  • 工作中沟通和执行力的重要性-开发、项目经理、需求之间的矛盾冲突
  • 线程同步机制
  • 华为Mate30手机有几种颜色
  • 大王卡怎么用
  • 猜你喜欢

  • 原发性肝细胞癌相关分子机制的研究现状及其进展
  • 专业英语单词题库
  • 旅游培训心得总结
  • 酒店管理调研 商业项目调研表——集团项目地产开发项目调研相关2019(叶予舜)
  • 清新空气,人人有责_四年级作文
  • 2019年高三写景作文 -第一场雪500字
  • 淄博爱拓商贸有限公司企业信用报告-天眼查
  • 施工现场安全用电安全作业指导书
  • 福州市森森林木贸易有限公司企业信用报告-天眼查
  • 湖北银监局关于罗田农村商业银行向罗田楚农商村镇银行(筹)投资入
  • 浅谈船舶柴油机设备的磨损故障诊断与研究
  • 2×30MW级的燃气天然气分布式能源配套水处理化学水、投资建设项目可行性研究报告-广州中撰咨询
  • 2018-2019学年江西省金溪县第一中学高二12月月考数学(理)试题 解析版
  • 人教版初一(下册)数学《10.3_课题学*_从数据谈节水》ppt课件
  • 文化传承与创新单元分层突破
  • 厨房美食菜谱:油菜炒腊肠的做法
  • 100测评网初中英语资料-8A-unit2单元练习
  • 17 E.1 分部分项工程量清单计价表
  • 部编三年级下册语文《池子与河流》教学设计
  • linux查看耗费流量的进程--iftop
  • 笔记本电脑怎么样让文件夹自动备份
  • 土地规划存在的主要问题和解决方法
  • 学前教育工作室跟岗工作计划
  • 2019秋五年级语文上册单元拓展阅读第一单元海燕素材新人教版
  • 避孕套会导致内分泌失调吗经常使用避孕套有哪些危害
  • 2019-2020学年高中地理湘教版选修4同步课件:4.3 城市交通与居民生活
  • 惊弓之鸟是历史故事吗惊弓之鸟是什么故事类型
  • 惠州市嘉源科技有限公司(企业信用报告)- 天眼查
  • 二年级数学教学工作总结4篇
  • 得了胃窦炎会转变成癌症吗
  • 深圳市日集投资有限公司企业信用报告-天眼查
  • 湖北省宜昌市协作体2018_2019学年高二生物上学期期末考试试题
  • ipadmini5能打电话吗
  • 河南企业申请注册商标需要提交的资联??男
  • 文件丢失造成 npm 报错 Module build failed: Error: No PostCSS Config found in:
  • 2018-2019年唐山市遵化市新店子镇康各庄联办小学三年级上册英语期末测验无答案
  • 2012中国大学教育学60强
  • 金条借款申请为何不通过
  • 应聘人事主管自我介绍
  • 成都市天动乐体育文化传播有限公司企业信息报告-天眼查
  • 微信传播营销策划报告幻灯片素材ppt模板
  • 内蒙古巴彦淖尔市第一中学2017-2018学年高二上学期10月月考(普通班)生物试题 Word版含答案
  • 电脑版