JVM分析工具

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进程
    JVM分析工具_第1张图片
  • jps -l 指令可以列出操作系统上正在运行的java进程,可以输出主类或jar路径
    JVM分析工具_第2张图片
  • jps -mlvV指令可以输出更详细信息,包括系统参数等
    jps -mlvV指令

2 jstat指令

可以通过jstat -options查看jstat可以支持的参数类型
JVM分析工具_第3张图片
如采样100次,每次间隔100ms
jstat -gcutil pid 100 100
JVM分析工具_第4张图片

3 jmap指令

jmap指令可以查看堆内存占用的一些情况
如jmap -histo 33824,查看33824进程的堆占用情况
JVM分析工具_第5张图片

4 jstack指令

jstack属于线程堆栈分析工具
如jstack -l 33824,查看进程33824的堆栈信息
JVM分析工具_第6张图片

5 jcmd指令

jcmd可以理解成前面所有命令的集合。这个指令用的比较多,如果不记得jcmd可以支持哪些参数,可以输入jcmd pid help指令
JVM分析工具_第7张图片
jcmd VM.flags指令

6 jrunscript/jjs指令

jjs指令是java命令行脚本执行工具,可以解释字形javascript脚本
JVM分析工具_第8张图片

2 JVM图形化分析工具

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

1 jconsole工具

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

2 jvisualvm

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

3 jmc

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

你可能感兴趣的:(jvm,java,jvm,运维,性能)