首页 > 其他分享 >JProfiler的安装与使用

JProfiler的安装与使用

时间:2023-07-28 20:11:06浏览次数:44  
标签:分析 JProfiler 代理 UI JVM 使用 安装 加载

JProfiler的安装与使用

JProfiler是由ej-technologies GmbH公司开发的一个用于分析JVM内部情况的专业工具。在研发过程中可以使用JProfiler,用于质量保证,也可以用于解决生产系统遇到的问题。

JProfiler处理的主要问题

Method calls(方法调用)

通常被称为"CPU分析"。方法调用可以通过不同的方式进行测量和可视化,分析方法调用可以帮助了解应用程序正在做什么,并找到提高性能的方法。

Allocations(分配)

分析对象在堆上的分配、引用链、垃圾回收(属于"内存分析")。这个功能可以让你解决内存泄漏, 用更少的内存分配更少的临时对象。

Threads and locks(线程和锁)

线程可以持有锁,比如在一个对象做同步操作,当多个线程同时操作,可能出现死锁的情况,JProfiler可以可视化这种情况,更深入了解线程与各种锁的情况。

Higher level subsystems(高层子系统)

很多性能问题发生在更高的语义层面,比如JDBC调用过程中,想要找出哪条SQL语句耗时最长,对于此种子系统,JProfiler提供了“探针”。

JProfiler的架构

The profiling agent(分析代理)

"JVM工具接口"(JVMTI)是一个本地接口,分析器使用此接口来获取信息。这意味着部分分析代理必须使用本地代码实现,故JVM profiler(JProfiler)不是独立于平台的,JProfiler支持了一系列平台。
JVM profiler作为一个本地库实现,它可以在启动时或者稍后的时间点加载。如果在启动时加载则需要在命令行中添加一个VM参数 "-agentpath:本地库的路径"。一般你不用手动配置这个参数,因为JProfiler会自动添加。
当JVM成功加载了本地库(JVM profiler),它就会调用库中的一个特殊函数,让the profiling agent(分析代理)初始化自己,,之后JProfiler会打印以“JProfiler”为前缀的信息,证明分析代理已经完成初始化。当添加了“-agentpath” VM参数后,只有the profiling agent(分析代理)成功加载或JVM启动失败两种可能。
当the profiling agent(分析代理)加载后,会要求JVMTI通知各种事件,如线程创建或类加载。
JProfiler可以将代理加载到已经运行的JVM中,通过JProfiler UI或者“../jpenable”命令行工具(command line tool)。

Recording data(数据记录)

JProfiler agent(JVM分析代理) 只负责收集分析数据。JProfiler UI是单独启动,通过Socket连接到JProfiler agent(JVM分析代理)。因此Profiled JVM(被分析的JVM)可以在本地机器或者远程机器上运行。
通过JProfiler UI,可以通知代理Recording data(记录数据),在UI中显示分析数据,并将快照保存到磁盘。作为UI的替代方案,也可以通过“../jpcontroller”命令行工具(command line tool)使用JProfiler MBEAN来控制分析代理
也可以使用一组预定义的触发器和操作来控制分析代理,此种方式在JProfiler称为"离线分析"。

Snapshots(快照)

虽然JProfiler UI可以显示实时分析数据,但保存记录所有分析数据的快照还是很有必要的。快照可以在JProfiler UI中手动保存,也可以通过触发器操作自动保存。
快照可以在JProfiler UI中打开和比较。对于自动化处理,命令行工具(command line tool)"../jpexport"和“../jpcompare”可以用来从先前保存的快照中提前数据并创建HTML报告。
从正在运行的JVM中获取堆快照的一种低开销(low-overhead)方式是使用"../jpdump"命令行工具(command line tool)。它使用JVM的内置功能来保存HPROF快照。此种快照可以被JProfiler打开,并且不需要加载分析代理。

JProfiler的下载与安装

下载

官方下载网址:https://www.ej-technologies.com/download/jprofiler/files

下载的版本:

windows系统:jprofiler_windows-x64_11_1_4.exe

linux系统:jprofiler_linux_11_1_4.tar.gz

安装

windows系统下载的是可执行程序,直接执行,自定义安装路径即可(如果不打算升级可以把升级检查频次设置为nerver)

linux系统下载的是tar包,通过tar命令解压后得到jprofiler11.1.4文件夹,移动到指定路径下即可
解压命令:tar -zxvf jprofiler_linux_11_1_4.tar.gz

如果想使用JProfiler的全部功能,需要购买许可证密钥来激活
name和company可以随意写
License key: L-J11-Everyone#202256-3huvfyy3ydckrg#2948

如果上面的许可证密钥失效了可以参考这个网址:
http://www.3h3.com/soft/248090.html

安装完毕后,
windows系统下运行jprofiler11\bin路径下的jprofiler.exe
linux系统下运行jprofiler11.1.4/bin路径下的jprofiler

安装完毕后启动JProfiler后如下图所示:

使用JProfiler分析JVM

分析JVM需要将JProfiler的分析代理加载到JVM中,有两种方式实现

  • 在启动脚本中指定一个"-agentpath"VM参数
  • 通过Attach API将代理加载到运行的JVM中

-agentpath VM参数

"-agentpath"是JVM提供的一个通过JVM参数,用于加载任何一种使用JVMTI接口的本地库。
在“ageentpath:”后面附加本地库的完整路径名。
eg:
-agentpath:/opt/jprofiler11.1.4/bin/linux-x64/libjprofilerti.so=port=8849,nowait

第一个等号将路径名与参数分开,第二个等号是参数"port=8849"的一部分。"port=8849"参数定义了分析代理与JProfiler UI连接的端口,默认端口为8849
"nowait"参数是告诉分析代理不要在启动时为了等待JProfiler UI连接而阻塞JVM,默认是启动时阻塞

指定"-agentpath"VM参数监控IDEA启动服务的JVM

1.选择一个新的服务集成

2.应用服务选择-通过应用服务

3.选择被监控的应用在本地

4.选择JVM环境-(我本地的环境是oracle-java1.8版本的java虚拟机hotspot)

5.选择应用服务是否等待JProfiler UI的连接(我这里选择的是直接启动,不等待JProfiler UI的连接)

6.选择JProfiler UI连接被分析的JVM的端口号(我这里选择的是默认的8849端口号)

7.安装VM参数启动服务

启动后可以看到JProfiler前缀的日志,说明分析代理完成了初始化

8.选择立即开启会话,并选择开销低的全抽样形式来记录数据

9.完成配置,显示JVM状态

通过Attach API将代理加载到运行的JVM,远程监控linux系统中的JVM

1.将JProfiler的tar包上传到服务器中,并解压得到JProfiler文件夹

2.进入jprofiler11.1.4/bin路径下运行jpenable,选择要监控的JVM与监听端口号

3.选择一个新的远程集成

4.选择远程服务器的系统

5.选择JVM环境

6.选择应用服务是否等待JProfiler UI

7.选择远程连接的IP

8.选择远程分析代理的路径

9.选择在合适进行配置(我这里选择的是在JProfiler UI连接后进行配置)

10.选择远程监控的端口号

11.选择立即开启会话,并选择开销低的全抽样形式来记录数据

12.完成配置,显示JVM状态

参考网址

https://www.ej-technologies.com/resources/jprofiler/help/doc/main/introduction.html
https://www.ej-technologies.com/resources/jprofiler/v/13.0/help_zh_CN/doc/main/introduction.html

标签:分析,JProfiler,代理,UI,JVM,使用,安装,加载
From: https://www.cnblogs.com/shenStudy/p/17588803.html

相关文章

  • Docker buildx 安装
    简介Dockerbuildx是docker的一个插件,它包含如下作用:支持MobyBuildKit的所有特性;可以跨CPU架构编译镜像;可以在跨多节点同时编译镜像。本文主要介绍其在Linux上的安装过程。备注:在Windows和macOs上,DockerDesktop已经包含了DockerBuildx,无需额外安装,可通过命令dockerbuildxversi......
  • 使用阿里云搭建网站并实现站库分离
    使用阿里云搭建自己的网站并用阿里云RDS实现站库分离,本文章将从注册域名到部署网站详细地讲解。什么是站库分离:站库分离就是网站和数据库不在同一个服务器上,数据库用的是内网网络;这样的操作模式更快,更安全;很多大型的企业都采用站库分离的模式。推荐几个网站程序,自己根据需要选择:论......
  • STM32使用硬件IIC读取SHTC3温湿度传感器 显示在OLED屏上
    STM32使用硬件I2C读取SHTC3温湿度传感器的数据并显示在0.96寸OLED屏上。我用的是STM32F103C8T6,程序用的是ST标准库写的。实现效果图I2C协议简介I2C通讯协议(Inter-IntegratedCircuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外......
  • 使用RunnerGo来简化测试流程
    在软件开发过程中,测试是一个重要的环节,需要投入大量时间和精力来确保应用程序或网站的质量和稳定性。但是,随着应用程序变得更加复杂和庞大,传统的测试工具在面对比较繁琐的项目时非常费时费力。这时,一些自动化测试工具就显得尤为重要了。其中,RunnerGo(开源)作为一款性能测试平台,可以帮......
  • Android web services详细使用
    Android与服务器端数据交互(基于SOAP协议整合android+webservice)上一节中我们通过http协议,采用HttpClient向服务器端action请求数据。当然调用服务器端方法获取数据并不止这一种。WebService也可以为我们提供所需数据,那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,......
  • android services 使用
    Android之Services【Services】一个Service是一个应用程序组件,它能完成长时间运行的操作在后台,并且不提供用户接口。另一个应用程序组件能开启一个service并且它将继续运行在后台即使用户转换到另一个应用程序。额外的,一个组件可以被绑定到一个service来和它交......
  • Linux源码安装mysql 5.5.x (cmake编译)
    以下五个软件包是在安装mysql5.5.x之前必须安装的,不然在进行cmake时会报错。这些软件可以通过下面的链接进行源码安装,也可以通过yum安装1.安装make编译器 下载地址: http://www.gnu.org/software/make/ tarzxvfmake-3.82.tar.gzcdmake-3.82./configuremakemakeinstall2.安装b......
  • ElasticSearch——使用备忘
    查询GEThttp://xxxxx:9200/user_list/_search 添加模板POSThttp://xxxxx:9200/user_list/_scripts/user_list_template{"script":{"lang":"mustache","source":"{\"query\":{\"bool\":{\&qu......
  • 手把手教你在本机安装Stable Diffusion秋叶整合包
    整合包对非技术出身的同学比较友好,因为秋叶大佬把相关的东西已经都整合好了,只需要点点点就行了。当然懂编程的同学就更没有问题了。准备为了保证AI绘画的效率,建议在本机安装Nvidia独立显卡,也就是俗称的N卡,并且显存要达到6G以上,6G只能出图,如果要做训练建议12G以上。推荐选择RTX4......
  • 软件测试|如何更新已经安装的Python第三方库
    简介当我们使用Python开发项目时,经常会依赖于各种第三方库来扩展功能或提高效率。这些库经常会发布新的版本,包含了修复漏洞、增加新特性或改进性能等更新。因此,及时更新和升级你的第三方库是很重要的。在Python中,可以使用pip工具来管理和更新这些库。在本文中,将介绍如何使用pip来更......