【java虚拟机】JDK的命令行工具详解

本文详细介绍了JDK提供的几个关键命令行工具,包括jps(虚拟机进程状况工具)、jstat(虚拟机统计信息监视工具)、jinfo(Java配置信息工具)、jmap(Java内存映像工具)和jhat(虚拟机堆转储快照分析工具)。这些工具可以帮助开发者监视JVM的状态,进行内存分析,定位问题,以及理解垃圾收集、JIT编译等运行数据。
摘要由CSDN通过智能技术生成

一、概述

JDK的命令行工具指的是jdk的bin目录中的一些可执行工具,除了常用的java、javac之外,还有很多其他可执行工具,主要包括用于监视虚拟机和故障处理的工具。这些故障处理工具被Sun公司作为“礼物”附赠给JDK的使用者。

在这里插入图片描述

主要的工具和功能如下:

名称 中文名 全拼 主要作用
jps 虚拟机进程状况工具 JVM ProcessStatus Tool 显示指定系统内所有虚拟机进程
jstat 虚拟机统计信息监视工具 JVM Statistics Monitoring Tool 用于收集虚拟机各方面的运行数据
jinfo Java配置信息工具 Configuration Info for Java 实时地查看和调整虚拟机各项参数
jmap Java内存映像工具 Memory Map for Java 用于生成堆转储快照
jhat 虚拟机堆转储快照分析工具 JVM Heap Analysis Tool 与jmap搭配使用,来分析jmap生成的堆转储快照
jstack Java堆栈跟踪工具 Stack Trace for Java 于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)

二、 各命令详解

1. jps:虚拟机进程状况工具

1) 用途说明

  • 可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID。
  • 虽然功能比较单一,但它是使用频率最高的JDK命令行工具,因为其他的JDK工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程。

2) 命令格式

jps  [ option ]   [ hostid ]

3) 参数说明

  • [ hostid ] : jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册的主机名。
  • [ option ]:参数的可选内容为下面几种
选项 作用
-q 只输出LVMID,省略主类的名称
-m 输出虚拟机进程启动时传递给主类的main函数的参数
-l 输出主类的全名,如果进程执行的是jar包,输出jar的路径
-v 输出虚拟机启动时jvm参数

4)使用示例

C:\Users\xk>jps
7712 Jps
4388 test
7716

C:\Users\xk>jps -q
4388
7716
5192

C:\Users\xk>jps -m
7616 Jps -m
4388 test
7716

C:\Users\xk>jps -l
4388 test.test
7716
8764 jdk.jcmd/sun.tools.jps.Jps

C:\Users\xk>jps -v
4388 test -Dfile.encoding=GBK
7716  -Dosgi.requiredJavaVersion=11 -Dosgi.instance.area.default=@user.home/ecli
pse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=11 -Dosgi.dataAreaRequiresExplicitInit=true --add-mod
ules=ALL-SYSTEM -Dosgi.requiredJavaVersion=11 -Dosgi.instance.area.default=@user
.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=A
LL-SYSTEM -Dosgi.requiredJavaVersion=11 -Dosgi.dataAreaRequiresExplicitInit=true
 -Xms256m -Xmx2048m --add-modules=ALL-SYSTEM -Declipse.p2.max.threads=10 -Doomph
.update.url=http://download.eclipse.org/oomph/updates/milestone/latest -Doomph.r
edirection.index.redirection=index:/->http://git.eclipse.org/c/oomph/org.eclipse
.oomph.git/plain/setups/ -Duser.dir=D:\java_tool\eclipse
8492 Jps -Dapplication.home=C:\Program Files\Java\jdk-15.0.1 -Xms8m -Djdk.module
.main=jdk.jcmd

C:\Users\xk>

2. jstat:虚拟机统计信息监视工具

1) 用途说明

  • 用于监视虚拟机各种运行状态信息的命令行工具
  • 它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据

2) 命令格式

jstat [ option vmid [ interval[s|ms] [count] ] ]

3) 参数说明

  • vmid

对于命令格式中的VMID与LVMID需要特别说明一下:如果是本地虚拟机进程,VMID与LVMID是一致的,如果是远程虚拟机进程,那VMID的格式应当是:[protocol:][//]vmid[@hostname[:port]/servername]

  • interval和count k: 代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每250毫秒查询一次进程2764垃圾收集状况,一共查询20次,那命令应当是:jstat -gc 2764 250 20
  • option : 代表着用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集、运行期编译状况,具体选项及作用请参考下表
选项 作用 jdk版本
-class 监视类装载、卸载数量、总空间一级类装载所耗费的时间
-gc 监视java堆状况,包括Eden区、两个survivor区,老年代、永久代等容量,已用完空间、GC时间合计等信息
-gccapacity 监视内容与-gc基本相同,但是输出主要关注java堆各大区域使用到的最大最小空间
-gcutil 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
-gcnew 监视新生代GC情况
-gcnewcapaciy 监视内容与-gcnew基本相同,输出主要关注使用到的最大最小空间
-gcold 监听老年代GC情况
-gcoldcapacity 监视内容与-gcold基本相同,输出主要关注使用到的最大最小空间
-gcpermcapacity 输出永久代使用到的最大最小空间 1.7及以下
-gcmetacapacity 输出元空间使用到的最大最小空间 1.8及以上
-compiler 输出JIT编译器编译过的方法、耗时等信息
-printcompilation 输出已经被JIT编译的方法

4) 使用实例和结果信息说明

1> 监视类装载、卸载数量、总空间一级类装载所耗费的时间
C:\Users\xk>jstat -class 7716
Loaded  Bytes  Unloaded  Bytes     Time
 20193 42956.4        1     1.0      33.60

C:\Users\xk>
结果列名 含义
Loaded 装载的类的数量
Bytes 装载类所占用的字节数
Unloaded 卸载类的数量
Bytes 卸载类的字节数
Time 装载和卸载类所花费的时间
2> -gc 监视java堆状况,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值