jdk命令行工具(一)

时间:2022-02-04 15:47:06

1、概述

  熟悉java开发的人应该都知道在jdk的bin目录下有许多的工具,这些工具主要用于监视虚拟机和故障处理。这些故障处理工具被Sun公司称作为“礼物”附赠给JDK的使用者,并在软件的使用说明中把它们生命为“没有技术支持并且是实验性质的”的产品,但事实上,这些工具都非常稳定并且功能强大,能在处理应用程序性能问题、定位故障时发挥很大的作用。

2、命令行工具

2.1、jps:虚拟机进程状况工具

  jps(JVM process Status Tool)命令虽然比较单一,确实我们平常使用频率最高的JDK命令行工具,它的作用是列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在类)名称以及这些进程的本地虚拟机唯一ID

  命令格式:

    jps   [option] [hostid]

jps工具主要选项
选项 作用
-q 只输出LVMID,省略主类的名称
-m  输出虚拟机进程启动时传递给主类main()函数的参数
-l  输出主类的全名,如果进程执行的是jar包,输出jar路径
-v  输出虚拟机进程启动是的jvm参数

2.2、jstat:虚拟机统计信息监视工具

  jstat(JVM statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,值提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具

命令格式:

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

  interval:查询时间间隔

  count:查询次数

 如果省略interval和count 参数,则默认只查询一次。假设需要每250ms查询一次进程32587的垃圾收集情况,一共查询20次,那么命令应该是:

  jstat -gc 32587 2590 20

jstat工具主要选项
选项  作用
-class  监视类装载、卸载数量、总空间以及所耗费的时间
-gc  监视java堆状况,包括Eden区、两个Supervisor区、老年代、永久代等的容量、已用空间、gc时间合计等信息
-gccapacity  监视内容与-gc基本一致,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil  监视内容与-gc基本一致,但输出主要关注已使用空间占总空间的百分比
-gccause  与-gcutil功能一样,但是会额外输出GC产生的原因
-gcnew  监视新生代GC情况
-gcnewcapacity  监视内容与-gcnew基本一致,但输出主要关注使用到的最大、最小空间
-gcold  监视老年代GC情况
-gcoldcapacity  监视内容与-gcold基本一致,但输出主要关注使用到的最大、最小空间
-gcmetacapacity  输出永久代使用的最大、最小空间
-compiler  输出JIT编译器编译过的方法、耗时等信息
-printcompilation  输出已经被JIT编译的方法

各工具选项输出内容详解  

-class Option:

列名  描述
Loaded  加载class的数量
Bytes  所占用空间大小
unloaded  未加载class的数量
Bytes  未加载占用空间
Time  执行类加载和卸载操作的时间。

-gc Option:

列名  描述
S0C  Supervisor0当前的容量(KB)
S1C  Supervisor1当前的容量(KB)
S0U  Survivor space 0 使用的容量(KB)
S1U  Survivor space 1 使用的容量(KB)
EC  Eden space 当前的容量(KB)
EU  Eden space 使用的容量(KB)
OC  old space当前的容量(KB)
OU  old space使用的容量(KB)
PC  permanent space当前的容量(KB)
PU  permanent space使用的容量(KB)
YGC  young generation垃圾回收的次数
YGCT  young generation垃圾回收的时间
FGC  full GC次数
FGCT  full GC时间
GCT  总的垃圾回收时间

            

  

    

-gccapacity Option

列名  描述
NGCMN  新生代最小容量(KB)
NGCMX  新生代最大容量(KB)
NGC  新生代当前容量(KB)
S0C  Supervisor0当前的容量(KB)
S1C  Supervisor1当前的容量(KB)
EC  Eden space 当前的容量(KB)
OGCMN  老年代最小容量(KB)
OGCMX  老年代最大容量(KB)
OGC  老年代当前容量(KB)
OC  老年区当前容量(KB)
PGCMN  永久代最小容量(KB)
PGCMX  永久代最大容量(KB)
PGC  当前永久代容量(KB)
PC  当前永久区容量(KB)
YGC  Young generation 垃圾回收的次数
FGC  Full GC次数

-gcutil Option

列名  描述
S0  S0区使用百分比
S1  S1区使用百分比
E  Eden 区使用百分比
O  Old区使用百分比
P  Permanent  区使用百分比
YGC  young generation垃圾回收次数
YGCT  young generation垃圾回收时间
FGC  full GC次数
FGCT  full GC时间
GCT  总共的垃圾回收时间

-gccause Option

列名  描述
LGCC  上一次产生gc的原因
GCC  当前gc原因

-gcnew

列名  描述
S0C  survivor space 0当前容量(KB)
S1C  survivor space 1当前容量(KB)
S0U  survivor space 0使用容量(KB)
S1U  survivor space 1使用容量(KB)
TT  阀值, 用于控制对象在新生代存活的最大次数
MTT  最大阀值
DSS  预期的survivor 大小(KB)
EC  当前Eden区的容量(KB)
EU  Eden区使用的容量(KB)
YGC  young generation垃圾回收次数
YGCT  young generation垃圾回收时间

-gcnewcapacity

列名  描述
NGCMN             new generation最小容量(KB)
NGCMX      new generation最大容量(KB)
NGC      new generation当前容量(KB)
S0CMX  survivor space 0最大容量(KB)
S0C  survivor space 0当前容量(KB)
S1CMX  survivor space 1最大容量(KB)
S1C  survivor space 1当前容量(KB)
ECMX  eden space 最大容量(KB)
EC  eden space 当前容量(KB)
YGC  young generation GC次数
FGC  Full GC次数

-gcold

列名  描述
MC  方法区容量(KB)
MU  方法区当前使用容量(KB)
CCSC  压缩类空间容量(KB)
CCSU  压缩类空间当前使用容量(KB)
OC  old space当前容量(KB)
OU  old space使用容量(KB)
YGC  young generation GC 次数
FGC  full GC次数
FGCT   full GC时间
GCT  总的gc时间

-gcoldcapacity

列名  描述
OGCMN  old generation最小容量(KB)
OGCMX  old generation最大容量(KB)
OGC  old generation当前容量(KB)
OC  old space容量(KB)
YGC  young generation GC次数
FGC   full GC次数
FGCT   full GC时间
GCT  总的gc时间

-gcmetacapacity

列名  描述
MCMN  最小元数据容量(KB)
MCMX  最大元数据容量(KB)
MC  当前元数据空间大小(KB)
CCSMN  最小压缩类空间大小(KB)
CCSMX  最大压缩类空间大小(KB)
CCSC  当前压缩类空间大小(KB)
YGC  young generation GC次数
FGC   full GC次数
FGCT  full GC时间
GCT  总的gc时间

-compiler

列名  描述
Compiled  编译任务执行次数
Failed  编译任务执行失败次数
Invalid  编译任务执行失效数量
Time  编译任务消耗时间
FailedType  最后一个编译失败任务的类型
FailedMethod  最后一个编译失败任务所在的类及方法

-printcompilation

列名  描述
Compiled  最近编译方法的数量
Size  最近编译方法的容量(KB)
Type  最近编译方法的编译类型
Method  方法名标识