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:执行类加载和卸载操作所花费的时间。
举个例子:
-compiler选项
Compiled:执行的编译任务的数量。
Failed:执行编译任务失败的数量。
Invalid:执行编译任务失效的数量。
Time:执行编译任务所花费的时间。
FailedType:上次编译失败的编译类型。
FailedMethod:上次编译失败的类名和方法。
举个例子:
-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的所用的总时间。
举个例子:
-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的次数。
举个例子:
-gcutil选项
S0:年轻代中第一个Survivor区使用大小占当前容量的百分比。
S1:年轻代中第二个Survivor区使用大小占当前容量的百分比。
E:Eden区使用大小占当前容量的百分比。
O:老年代使用大小占当前容量的百分比。
M:元空间使用大小占当前容量的百分比。
CCS:压缩类使用大小占当前容量的百分比。
YGC:Young GC的次数。
YGCT:Young GC所用的时间。
FGC:Full GC的次数。
FGCT:Full GC的所用的时间。
GCT:GC的所用的总时间。
举个例子:
-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:当前垃圾回收的原因。
举个例子:
-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所用的时间。
举个例子:
-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的次数。
举个例子:
-gcold选项
MC:元空间的容量,单位为KB。
MU:元空间已使用大小,单位为KB。
CCSC:压缩类的容量,单位为KB。
CCSU:压缩类已使用大小,单位为KB。
OC:老年代的容量,单位为KB。
OU:老年代已使用大小,单位为KB。
YGC:Young GC的次数。
FGC:Full GC的次数。
FGCT:Full GC的所用的时间。
GCT:GC的所用的总时间。
举个例子:
-gcoldcapacity选项
OGCMN:老年代最小的容量,单位为KB。
OGCMX:老年代最大的容量,单位为KB。
OGC:当前老年代的容量,单位为KB。
OC:当前老年代的容量,单位为KB。
YGC:Young GC的次数。
FGC:Full GC的次数。
FGCT:Full GC的所用的时间。
GCT:GC的所用的总时间。
举个例子:
-gcmetacapacity选项
MCMN:元空间最小的容量,单位为KB。
MCMX:元空间最大的容量,单位为KB。
MC:当前元空间的容量,单位为KB。
CCSMN:压缩类最小的容量,单位为KB。
CCSMX:压缩类最大的容量,单位为KB。
YGC:Young GC的次数。
FGC:Full GC的次数。
FGCT:Full GC的所用的时间。
GCT:GC的所用的总时间。
举个例子:
-printcompilation选项
Compiled:最近编译方法执行的编译任务的数量。
Size:最近编译方法的字节码的字节数。
Type:最近编译方法的编译类型。
Method:最近编译方法的类名和方法名。
举个例子:
附实例使用:统计gc信息
各列意义:
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
来源:https://www.cnblogs.com/heihaozi/p/16009083.html


猜你喜欢
- 代码很简单,如下所示: package swt_jface.demo1; import org.eclipse.swt.SWT; impor
- Interfaces 接口在软件工程中,由一份“契约”规定来自不同的开发小组的软件之间如何相互作用是非常常见的。每个小组都可以在不知道别的组
- 带着问题 往下看 (namesrv)我们在写组件的时候 怎么管理version如果现在让你 维护一个 各个jar包公用的属性System.e
- 本文实例分析了C#泛型用法。分享给大家供大家参考。具体分析如下:这里演示如何创建具有单个类型参数的自定义泛型列表类,以及如何实现 IEnum
- 问题提出:一般在生产环境上,日志的级别是INFO以上,但有时候程序出现问题(如SQL报错),少量日志不能尽快定位问题,这时候可以动态修改日志
- 比如:javascriptjavasejavaeejavame思路:定义一个计数器获取java第一次出现的位置从第一次出现位置后剩余的字符串
- 本文实例为大家分享了java动态导出excel压缩成zip下载的具体代码,供大家参考,具体内容如下package pack.java.io.
- 女朋友他们项目用了 spring-boot,以 spring-boot-parent 作为 parent:<parent> &l
- xxx cannot be resolved to a type引言 eclipse新导入的项目经常可以
- Spring整合Myabtis思路的分析引入相关依赖SpringMyabtismysqlMybatsi-spring…
- Spring Cloud Gateway 服务网关API 主流网关有NGINX、ZUUL、Spring Cloud Gateway、Link
- 今天是解决报错的一天,首先在操作Springboot中的时候,有些朋友的yml显示的不是绿叶的图标,或者是配置了之后不生效的问题。第一个解决
- AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。本文
- 1.object.toString()方法这种方法要注意的是object不能为null,否则会报NullPointException,一般别
- 目录1,基本介绍2,HttpURLConnection实现3.HttpClient实现4.Spring的RestTemplate1,基本介绍
- 本文实例讲述了C#自定义针对URL地址的处理类。分享给大家供大家参考。具体分析如下:这个C#类是专门针对URL网址处理的类,可以对URL地址
- 最近对接接口的时候,需要根据对方的请求数据类型来进行传值,常用的就是application/x-www-form-urlencoded,aj
- Unity中的RegisterPlugins实用案例在Unity游戏开发中,我们经常需要使用第三方插件来实现一些特定的功能。为了让这些插件能
- 一、简介现在的Android应用程序中,不可避免的都会使用到图片,如果每次加载图片的时候都要从网络重新拉取,这样不但很耗费用户的流量,而且图
- 本文实例为大家分享了java实现订餐系统的具体代码,供大家参考,具体内容如下import java.util.Scanner;public