JVM分析工具

news2025/8/6 20:39:31

JVM在运行过程中,我们可以利用各种工具对JVM进行分析,这是性能调优的利器。可以通过各种工具了解在系统运行过程中,在JVM底层到底发生了什么。JVM分析工具一般分为两种,一种是命令行工具,一种是图形界面工具。

JVM分析工具

JDK自带的命令行工具都在jdk的bin目录下(C:\Program Files\Java\jdk1.8.0_291\bin)。内置的命令行工具可以帮助我们系统运行过程中JVM内部的运行过程。主要的工具有如下

  • java:java应用的启动程序,如java -jar xx.jar
  • javac:jdk内置的编译工具,将java源文件编译为.class文件。如javac xx.java
  • javap:反编译class文件工具,如javap -verbose xx.class
  • javadoc:根据java代码和标准注释,自动生成相关的API说明文档
  • javah:JNI开发时,根据java代码生成需要的.h文件
  • extcheck:检查某个jar文件和运行时扩展jar有没有版本冲突,一般使用比较少
  • jdb:Java Debugger,可以调试本地和远端程序,属于JPDA中的一个demo实现,供其他调试器参考。开始很少使用
  • jar:打包工具,可以将文件和目录打包成.jar文件,jar文件从本质上来讲就是zip文件,只是后缀不同。
  • keytool:安全证书和密钥的管理工具
  • jarsigner:JAR文件签名和验证工具
  • policytool:是一款图形界面工具,管理本机的Java安全策略
  • jps/jino:查看运行中的java进程
  • jstat:查看JVM内部gc相关信息
  • jmap:查看线程信息
  • jcmd:执行JVM相关分析命令(整合命令)
  • jrunscript/jjs:执行js命令

命令行指令具体用法在csdn上有大量文章可以参考,以下会列出几个比较常用的指令作为参考。

1 jps/jino命令

  • jps指令可以列出操作系统上正在运行的java进程
    jps命令
  • jps -l 指令可以列出操作系统上正在运行的java进程,可以输出主类或jar路径
    jpl -l指令
  • jps -mlvV指令可以输出更详细信息,包括系统参数等
    jps -mlvV指令

2 jstat指令

可以通过jstat -options查看jstat可以支持的参数类型
jista指令
如采样100次,每次间隔100ms
jstat -gcutil pid 100 100
采样100次每次间隔100ms

3 jmap指令

jmap指令可以查看堆内存占用的一些情况
如jmap -histo 33824,查看33824进程的堆占用情况
jmap指令

4 jstack指令

jstack属于线程堆栈分析工具
如jstack -l 33824,查看进程33824的堆栈信息
jstack指令

5 jcmd指令

jcmd可以理解成前面所有命令的集合。这个指令用的比较多,如果不记得jcmd可以支持哪些参数,可以输入jcmd pid help指令
jcmd help指令
jcmd VM.flags指令

6 jrunscript/jjs指令

jjs指令是java命令行脚本执行工具,可以解释字形javascript脚本
jrunscript指令

2 JVM图形化分析工具

命令行分析工具虽然能给JVM分析提供方便,但没有图形界面交互风格友好。目前,JVM提供以下几种图形化界面工具可以给开发者分析JVM运行分析。

1 jconsole工具

直接在命令界面,输入jconsole命令即可启动jconsole工具(windows系统是在”运行“框输入”cmd",弹出小黑框再输入“jconsole”即可)。jconsole聚焦于监控JVM内存、线程、CPU等使用情况及发展趋势。
jconsole工具

2 jvisualvm

jdk8大概从26开始,jvisualvm都没有被直接打包进jdk,所以直接通过jvisualvm命令,不会打开jvisualvm。可以去官网直接下载jvisualvm工具,下载之后再使用。下载地址为:visualvm.github.io。jvisualvm比较核心的是CPU抽样器。也可以直接点击如下链接进行资源下载
jvisualvm包下载路径:jvisualvm资源包
jvisualvm

3 jmc

jmc功能非常强大,不仅包括jconsole及jvisualvm功能,还有一个飞行记录的能力,把一段时间段内,JVM的变化记录下来,从而对jvm内部各种状态进行分析(包括内存、cpu)。
从2020年7月以后,jmc就已经不再打包到jdk,jdk默认不带jmc,所以需要手工下载。
jmc包下载和使用教程可以参考jmc包和部署教程
jmc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

卷积操作的不同类型

文章目录1. 一维卷积2. 二维卷积3. 三维卷积4. 扩张卷积5. 空洞卷积6. 分组卷积一般而言,一维卷积用于文本数据;二维卷积用于图像数据,对宽度和高度都进行卷积;三维卷积用于视频及3D图像处理领域,对立方体的三个面进行…

CS5269TypeC转HDMI2.0+VGA带PD100W快充拓展坞方案芯片完整设计资料(原理图+PCB文件)

CS5269TypeC转HDMI2.0VGA带PD100W快充方案芯片原理图: 用于US Type-C或DP1.4连接到HDMI2.0转换器。CS5269集成了DP1.4HDMI2.0的输出端和VGA输出接口。另外,两个CC控制器包括CC通信,以实现DP Alt模式和功率传输功能,一个用于上游类…

SD-WAN NFV uCPE VNF

NFV(network function virtulization) NFV(network function virtulization,网络功能虚拟化)是指一种操作框架,目的是为了将部署在COTS硬件上的、在虚拟基础架构中的VNF软件设备编排和自动化起来,然后进行…

精耕丨“银发族”与“熬夜党”都在养生,大健康品牌怎样精耕消费者需求?

“被疫情偷走的这三年”里,健康成为所有人不得不面对的生活命题。 丁香医生《2022国民健康洞察报告》显示,2021年人们平均存在4.8个健康困扰,算得上“人均亚健康”,其中情绪、身材、皮肤焦虑位列TOP3。 人们对稳住健康的追求也一…

5G无线技术基础自学系列 | 物理共享信道分配

素材来源:《5G无线网络优化实践》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 在LTE协议中,DCI的位置和对应…

第一章《初学者问题大集合》第8节:Java程序初步释疑

当成功运行了第一个Java程序,很多读者都对之前的各项操作以及所写的这行代码有一些不清楚的地方,本节就来解答一下这些问题。其实,初学者的大部分疑问都集中体现在图1-41中。 图1-41 源文件名与类名称 1.类是个什么东西? 前文曾经让各位读者在写代码之前先创建一个“类”…

day065:IO流、字节流、字节流写数据

目录 一、IO流 1.IO流的目的 2.IO的表示 二、IO流的分类 1.按流向分 2.按数据类型分 三、字节流 1.字节流写数据 2.字节流的注意事项 3.字节流写数据的三种方式 4.字节流写数据的两个问题 (1)字节流写数据如何换行? (…

腾讯云服务器部署vue前端项目(Ubuntu+vue+nginx+nodejs+npm)

一、安装nodejs和npm sudo apt-get nodejs sudo apt-get npm 但是在安装npm后,输入npm --version时,会报错 此时,需要升级nodejs的版本,执行下面的两条命令 wget -qO- https://deb.nodesource.com/setup_16.x | sudo -E bash - …

兄弟兄弟,在git中的使用.gitignore忽略不想要提交的文件,了解一下呗

1. .gitignore的作用 在实际的工程项目中,除了项目本身的代码文件、配置文件外,还有一些文件或目录并不需要纳入版本管理中,如idea工具会在工程根目录生成一个.idea的目录、工程编译后生的target等。因此在提交代码文件的时候需要自动把这些目…

医学图像处理-安装nibabel包命令

医学图像处理-安装nibabel包命令问题与解决方案问题与解决方案 直接使用 pip install nibabel 出现如下报错: 尝试使用conda 命令安装,conda官网查命令: conda install -c conda-forge nibabel conda install -c conda-forge/label/gcc7 ni…

编译 - Make 命令教程 - 学习/实践

1.应用场景 主要用于学习和使用make命令进行软件编译安装。 2.学习/操作 1.文档阅读 Make 命令教程 - 阮一峰的网络日志 Make- GNU Project - Free Software Foundation 2.整理输出 2.1 什么是make命令? Make 是最常用的构建工具,诞生于1977年&#xff…

python正则表达式实战——获取图片

我最近自学了一段时间爬虫,感觉挺有意思的,逛网页的时候,无意间发现了一个壁纸网站,我就萌生了一个想法,看能不能下下来,说干就干。 前言 目标网站:首先我们要知道我们的目标位置。 编程语言…

Java Spring-AOP动态代理-JDK和CGlib实现

Java Spring-AOP CGlib和JDK动态代理实现 编码是为了解决生活中的问题,譬如现在我想用筷子吃饭的时候看手机,那么首先会有两个对象。 现在如果是面向对象编程思想,我们会new一个筷子对象,new一个手机对象,然后先调用…

Linux 命令 —— feh

Linux 命令 —— feh1. 介绍2. 模式-重要!2.1 模式对比3. 参数说明3. 常见使用方式1. 介绍 本教程基于版本 feh 2.23.2. 命令:feh feh是一个基于模式的图像查看器。虽然它也可以由(图形化的)文件管理器启动以查看图像,但它特别针对需要快速…

函数传址,但无法改变xy数据问题

目录 问题 正确代码 两者区别 开启调试 设置监视的变量 逐过程调试 在自定义函数中调试 跳出自定义函数 对正确的代码进行调试 进入自定义函数 跳出自定义函数 为什么说编译器有问题 问题 今天遇到一个很有意思的问题分享一下。他写了一个交换数据的函数&#xf…

看一眼就会的k8s权限管理手把手教学

Kubernetes Kubernetes使用RBAC授权Kubernetes一、API概述1.Role 和 ClusterRole1.RoleBinding和ClusterRoleBinding二、使用步骤(Role及RoleBinding为例)1、创建user用户证书2、创建集群、用户1、创建集群配置文件2、创建基于集群和新用户的上下文3、给…

【java进阶02:抽象类和接口】类与类之间的关系 抽象类与接口的区别

目录 抽象类 接口 抽象类 什么是抽象类 /*类————>对象 :实例化 对象————>类 :抽象抽象类:1、什么是抽象类?类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类类本身是不存在的&…

python 实现MAC泛洪与ARP欺骗

声明:本文章的一切内容仅用于交流与学习 目录 一、Python scapy 二、MAC泛洪 三、ARP欺骗 一、Python scapy scapy提供了构造、发送、接收、分析数据包的功能 scapy的内容很多这里只说明要用到的内容 RandMAC:自动生成一个随机的MAC地址 packet Et…

【SpringBoot】idea创建SpringBoot项目及注解配置相关应用

文章目录SpringBoot:一、简言二、SpringBoot作用三、核心功能四、创建springBoot项目1、新建SpringBoot(maven基础下)2、next---选版本导jar包3、创建后的pom.xml4、SpringBoot启动类六、测试项目1.项目构建:2.数据源注入dao层---…

【爬虫系列】Python爬虫实战--招聘网站的职位信息爬取

一、分析 1. 需求分析 从网上找工作,大家一般都会通过各种招聘网站去检索相关信息,今天利用爬虫采集招聘网站的职位信息,比如岗位名称,岗位要求,薪资,公司名称,公司规模,公司位置&…