Java中jstat命令的使用详解

作者:万猫学社 时间:2023-12-10 21:50:23 

jstat命令简介

jstat(Java Virtual Machine Statistics Monitoring Tool)是JDK提供的一个可以监控Java虚拟机各种运行状态信息的命令行工具。它可以显示Java虚拟机中的类加载、内存、垃圾收集、即时编译等运行状态的信息。

jstat命令参数

命令语法:

jstat generalOptions
jstat outputOptions [-t] [-h<lines>] <vmid> [<interval> [<count>]]

命令参数说明:

  • generalOptions:通用选项,如果指定一个通用选项,就不能指定任何其他选项或参数。它包括如下两个选项:


    • -help:显示帮助信息。


    • -options:显示outputOptions参数的列表。

  • outputOptions:输出选项,指定显示某一种Java虚拟机信息。

  • -t:把时间戳列显示为输出的第一列。这个时间戳是从Java虚拟机的开始运行到现在的秒数。

  • -h n:每显示n行显示一次表头,其中n为正整数。默认值为 0,即仅在第一行数据显示一次表头。

  • vmid:虚拟机唯一ID(LVMID,Local Virtual Machine Identifier),如果查看本机就是Java进程的进程ID。

  • interval:显示信息的时间间隔,单位默认毫秒。也可以指定秒为单位,比如:1s。如果指定了该参数,jstat命令将每个这段时间显示一次统计信息。

  • count:显示数据的次数,默认值是无穷大,这将导致jstat命令一直显示统计信息,直到目标JVM终止或jstat命令终止。

输出选项

如果不指定通用选项(generalOptions),则可以指定输出选项(outputOptions)。输出选项决定jstat命令显示的内容和格式,具体如下:

  • -class:显示类加载、卸载数量、总空间和装载耗时的统计信息。

  • -compiler:显示即时编译的方法、耗时等信息。

  • -gc:显示堆各个区域内存使用和垃圾回收的统计信息。

  • -gccapacity:显示堆各个区域的容量及其对应的空间的统计信息。

  • -gcutil:显示有关垃圾收集统计信息的摘要。

  • -gccause:显示关于垃圾收集统计信息的摘要(与-gcutil相同),以及最近和当前垃圾回收的原因。

  • -gcnew:显示新生代的垃圾回收统计信息。

  • -gcnewcapacity:显示新生代的大小及其对应的空间的统计信息。

  • -gcold: 显示老年代和元空间的垃圾回收统计信息。

  • -gcoldcapacity:显示老年代的大小统计信息。

  • -gcmetacapacity:显示元空间的大小的统计信息。

  • -printcompilation:显示即时编译方法的统计信息。

jstat命令的显示输出被格式化为一个表,列用空格分隔。接下来,我来了解一下每条输出选项的列名。

-class选项

  • Loaded:加载的类的数量。

  • Bytes:加载的类所占用的字节数。

  • Unloaded:卸载的类的数量。

  • Bytes:卸载的类所占用的字节数。

  • Time:执行类加载和卸载操作所花费的时间。

举个例子:

Java中jstat命令的使用详解

-compiler选项

  • Compiled:执行的编译任务的数量。

  • Failed:执行编译任务失败的数量。

  • Invalid:执行编译任务失效的数量。

  • Time:执行编译任务所花费的时间。

  • FailedType:上次编译失败的编译类型。

  • FailedMethod:上次编译失败的类名和方法。

举个例子:

Java中jstat命令的使用详解

-gc选项

  • S0C:年轻代中第一个Survivor区的容量,单位为KB。

  • S1C:年轻代中第二个Survivor区的容量,单位为KB。

  • S0U:年轻代中第一个Survivor区已使用大小,单位为KB。

  • S1U:年轻代中第二个Survivor区已使用大小,单位为KB。

  • EC:年轻代中Eden区的容量,单位为KB。

  • EU:年轻代中Eden区已使用大小,单位为KB。

  • OC:老年代的容量,单位为KB。

  • OU:老年代已使用大小,单位为KB。

  • MC:元空间的容量,单位为KB。

  • MU:元空间已使用大小,单位为KB。

  • CCSC:压缩类的容量,单位为KB。

  • CCSU:压缩类已使用大小,单位为KB。

  • YGC:Young GC的次数。

  • YGCT:Young GC所用的时间。

  • FGC:Full GC的次数。

  • FGCT:Full GC的所用的时间。

  • GCT:GC的所用的总时间。

举个例子:

Java中jstat命令的使用详解

-gccapacity选项

  • NGCMN:年轻代最小的容量,单位为KB。

  • NGCMX:年轻代最大的容量,单位为KB。

  • NGC:当前年轻代的容量,单位为KB。

  • S0C:年轻代中第一个Survivor区的容量,单位为KB。

  • S1C:年轻代中第二个Survivor区的容量,单位为KB。

  • EC:年轻代中Eden区的容量,单位为KB。

  • OGCMN:老年代最小的容量,单位为KB。

  • OGCMX:老年代最大的容量,单位为KB。

  • OGC:当前老年代的容量,单位为KB。

  • OC:当前老年代的容量,单位为KB。

  • MCMN:元空间最小的容量,单位为KB。

  • MCMX:元空间最大的容量,单位为KB。

  • MC:当前元空间的容量,单位为KB。

  • CCSMN:压缩类最小的容量,单位为KB。

  • CCSMX:压缩类最大的容量,单位为KB。

  • CCSC:当前压缩类的容量,单位为KB。

  • YGC:Young GC的次数。

  • FGC:Full GC的次数。

举个例子:

Java中jstat命令的使用详解

-gcutil选项

  • S0:年轻代中第一个Survivor区使用大小占当前容量的百分比。

  • S1:年轻代中第二个Survivor区使用大小占当前容量的百分比。

  • E:Eden区使用大小占当前容量的百分比。

  • O:老年代使用大小占当前容量的百分比。

  • M:元空间使用大小占当前容量的百分比。

  • CCS:压缩类使用大小占当前容量的百分比。

  • YGC:Young GC的次数。

  • YGCT:Young GC所用的时间。

  • FGC:Full GC的次数。

  • FGCT:Full GC的所用的时间。

  • GCT:GC的所用的总时间。

举个例子:

Java中jstat命令的使用详解

-gccause选项

  • S0:年轻代中第一个Survivor区使用大小占当前容量的百分比。

  • S1:年轻代中第二个Survivor区使用大小占当前容量的百分比。

  • E:Eden区使用大小占当前容量的百分比。

  • O:老年代使用大小占当前容量的百分比。

  • M:元空间使用大小占当前容量的百分比。

  • CCS:压缩类使用大小占当前容量的百分比。

  • YGC:Young GC的次数。

  • YGCT:Young GC所用的时间。

  • FGC:Full GC的次数。

  • FGCT:Full GC的所用的时间。

  • GCT:GC的所用的总时间。

  • LGCC:上次垃圾回收的原因。

  • GCC:当前垃圾回收的原因。

举个例子:

Java中jstat命令的使用详解

-gcnew选项

  • S0C:年轻代中第一个Survivor区的容量,单位为KB。

  • S1C:年轻代中第二个Survivor区的容量,单位为KB。

  • S0U:年轻代中第一个Survivor区已使用大小,单位为KB。

  • S1U:年轻代中第二个Survivor区已使用大小,单位为KB。

  • TT:对象在年轻代存活的次数。

  • MTT:对象在年轻代存活的最大次数

  • DSS:期望的Survivor区大小,单位为KB。

  • EC:年轻代中Eden区的容量,单位为KB。

  • EU:年轻代中Eden区已使用大小,单位为KB。

  • YGC:Young GC的次数。

  • YGCT:Young GC所用的时间。

举个例子:

Java中jstat命令的使用详解

-gcnewcapacity选项

  • NGCMN:年轻代最小的容量,单位为KB。

  • NGCMX:年轻代最大的容量,单位为KB。

  • NGC:当前年轻代的容量,单位为KB。

  • S0CMX:年轻代中第一个Survivor区最大的容量,单位为KB。

  • S0C:年轻代中第一个Survivor区的容量,单位为KB。

  • S1CMX:年轻代中第二个Survivor区最大的容量,单位为KB。

  • S1C:年轻代中第二个Survivor区的容量,单位为KB。

  • ECMX:年轻代中Eden区最大的容量,单位为KB。

  • EC:年轻代中Eden区的容量,单位为KB。

  • YGC:Young GC的次数。

  • FGC:Full GC的次数。

举个例子:

Java中jstat命令的使用详解

-gcold选项

  • MC:元空间的容量,单位为KB。

  • MU:元空间已使用大小,单位为KB。

  • CCSC:压缩类的容量,单位为KB。

  • CCSU:压缩类已使用大小,单位为KB。

  • OC:老年代的容量,单位为KB。

  • OU:老年代已使用大小,单位为KB。

  • YGC:Young GC的次数。

  • FGC:Full GC的次数。

  • FGCT:Full GC的所用的时间。

  • GCT:GC的所用的总时间。

举个例子:

Java中jstat命令的使用详解

-gcoldcapacity选项

  • OGCMN:老年代最小的容量,单位为KB。

  • OGCMX:老年代最大的容量,单位为KB。

  • OGC:当前老年代的容量,单位为KB。

  • OC:当前老年代的容量,单位为KB。

  • YGC:Young GC的次数。

  • FGC:Full GC的次数。

  • FGCT:Full GC的所用的时间。

  • GCT:GC的所用的总时间。

举个例子:

Java中jstat命令的使用详解

-gcmetacapacity选项

  • MCMN:元空间最小的容量,单位为KB。

  • MCMX:元空间最大的容量,单位为KB。

  • MC:当前元空间的容量,单位为KB。

  • CCSMN:压缩类最小的容量,单位为KB。

  • CCSMX:压缩类最大的容量,单位为KB。

  • YGC:Young GC的次数。

  • FGC:Full GC的次数。

  • FGCT:Full GC的所用的时间。

  • GCT:GC的所用的总时间。

举个例子:

Java中jstat命令的使用详解

-printcompilation选项

Compiled:最近编译方法执行的编译任务的数量。

Size:最近编译方法的字节码的字节数。

Type:最近编译方法的编译类型。

Method:最近编译方法的类名和方法名。

举个例子:

Java中jstat命令的使用详解

附实例使用:统计gc信息

Java中jstat命令的使用详解

各列意义

S0C:年轻代中第一个存活区的大小

S1C:年轻代中第二个存活区的大小

S0U:年轻代中第一个存活区已使用的空间 (字节) 

S1U:年轻代中第二个存活区已使用的空间 (字节) 

EC:   Edem区大小

EU:   年轻代中Edem区已使用的空间 (字节) 

OC:  老年代大小

OU:  老年代已使用的空间 (字节) 

PC:   持久代大小

PU:持久代已使用的空间 (字节) 

YGC: 从应用程序启动到采样时young gc的次数

YGCT: 从应用程序启动到采样时young gc的所用的时间(s)

FGC:  从应用程序启动到采样时full gc的次数

FGCT: 从应用程序启动到采样时full gc的所用的时间

GCT: 从应用程序启动到采样时整个gc所用的时间

如果young gc所用的时间比较长,如几秒几十秒,则肯定不正常。

# jstat -gcutil 25444

 

S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
11.63   0.00   56.46  66.92  98.49 162    0.248    6      0.331    0.579

Java中jstat命令的使用详解

来源:https://www.cnblogs.com/heihaozi/p/16009083.html

标签:jstat,命令,java
0
投稿

猜你喜欢

  • Android库项目中的资源ID冲突的解决方法

    2023-11-04 05:32:53
  • 详解Spring 中 Bean 的生命周期

    2023-09-13 14:55:57
  • android JSON解析数据 android解析天气预报

    2022-01-16 03:33:53
  • Android图片处理:识别图像方向并显示实例教程

    2023-02-11 08:01:07
  • Android通过Socket与服务器之间进行通信的示例

    2023-11-13 04:53:15
  • mac系统下载、安装、使用Java8教程

    2023-07-06 04:54:38
  • Android中RecyclerView布局代替GridView实现类似支付宝的界面

    2021-08-20 02:32:34
  • C# 并行和多线程编程——认识和使用Task

    2022-03-28 05:48:04
  • Java语言中&&与& ||与|的区别是什么

    2022-06-10 17:44:09
  • IntelliJ IDEA中properties文件显示乱码问题的解决办法

    2021-09-08 04:59:03
  • Android对话框使用方法详解

    2023-11-09 03:37:51
  • Android仿微信单击拍照长按录像功能实例代码

    2022-01-16 17:45:07
  • 深入解析Java中ThreadLocal线程类的作用和用法

    2022-01-12 09:03:15
  • C#文件分割的方法

    2023-09-17 22:20:56
  • C#操作config文件的具体方法

    2023-09-03 12:18:07
  • Java String源码分析并介绍Sting 为什么不可变

    2021-09-23 06:10:42
  • Android实现左滑退出Activity的完美封装

    2023-09-19 21:11:59
  • maven为MANIFEST.MF文件添加内容的方法

    2022-10-29 11:15:56
  • Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】

    2023-03-17 11:09:11
  • 代码分析Android实现侧滑菜单

    2022-04-02 16:38:45
  • asp之家 软件编程 m.aspxhome.com