jstat -gc pid 1 5 > 1.txt //每隔1毫秒采样1次,采5次
数据结果单位是KB
转自: http://my.oschina.net/feichexia/blog/196575
要明白上面各列的意义,先看JVM堆内存布局:
可以看出:
1
2
|
堆内存=年轻代+年老代+永久代
年轻代=Eden区+两个Survivor区(From和To)
|
现在来解释各列含义:
1
2
3
4
5
6
7
|
S0C、S1C、S0U、S1U:Survivor0 /1 区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:FullGC次数和FullGC耗时
GCT:GC总耗时
|
Jstat 是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap
size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显
一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。
执行:cd $JAVA_HOME/bin中执行jstat,注意jstat后一定要跟参数。
语法结构:
Usage: jstat-help|-options
jstat-
[-t] [-h] [[]]
参数解释:
Options — 选项,我们一般使用 -gcutil
查看gc情况
vmid—VM的进程号,即当前运行的java进程号
interval– 间隔时间,单位为毫秒
count—打印次数,如果缺省则打印无数次
Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap
size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。参考格式如下:
jstat-options
可以列出当前JVM版本支持的选项,常见的有
·lclass (类加载器)
·lcompiler (JIT)
·lgc (GC堆状态)
·lgccapacity (各区大小)
·lgccause (最近一次GC统计和原因)
·lgcnew (新区统计)
·lgcnewcapacity (新区大小)
·lgcold (老区统计)
·lgcoldcapacity (老区大小)
·lgcpermcapacity (永久区大小)
·lgcutil (GC统计汇总)
·lprintcompilation (HotSpot编译统计)
1、jstat –class :
显示加载class的数量,及所占空间等信息。
显示列名
|
具体描述
|
Loaded
|
装载的类的数量
|
Bytes
|
装载类所占用的字节数
|
Unloaded
|
卸载类的数量
|
Bytes
|
卸载类的字节数
|
Time
|
装载和卸载类所花费的时间
|
2、jstat -compiler
显示VM实时编译的数量等信息。
显示列名
|
具体描述
|
Compiled
|
编译任务执行数量
|
Failed
|
编译任务执行失败数量
|
Invalid
|
编译任务执行失效数量
|
Time
|
编译任务消耗时间
|
FailedType
|
最后一个编译失败任务的类型
|
FailedMethod
|
最后一个编译失败任务所在的类及方法
|
3、jstat -gc :
可以显示gc的信息,查看gc的次数,及时间。
显示列名
|
具体描述
|
S0C
|
年轻代中第一个survivor(幸存区)的容量 (字节)
|
S1C
|
年轻代中第二个survivor(幸存区)的容量 (字节)
|
S0U
|
年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
|
S1U
|
年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
|
EC
|
年轻代中Eden(伊甸园)的容量 (字节)
|
EU
|
年轻代中Eden(伊甸园)目前已使用空间 (字节)
|
OC
|
Old代的容量 (字节)
|
OU
|
Old代目前已使用空间 (字节)
|
PC
|
Perm(持久代)的容量 (字节)
|
PU
|
Perm(持久代)目前已使用空间 (字节)
|
YGC
|
从应用程序启动到采样时年轻代中gc次数
|
YGCT
|
从应用程序启动到采样时年轻代中gc所用时间(s)
|
FGC
|
从应用程序启动到采样时old代(全gc)gc次数
|
FGCT
|
从应用程序启动到采样时old代(全gc)gc所用时间(s)
|
GCT
|
从应用程序启动到采样时gc用的总时间(s)
|
4、jstat -gccapacity :可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小
显示列名
|
具体描述
|
NGCMN
|
年轻代(young)中初始化(最小)的大小(字节)
|
NGCMX
|
年轻代(young)的最大容量 (字节)
|
NGC
|
年轻代(young)中当前的容量 (字节)
|
S0C
|
年轻代中第一个survivor(幸存区)的容量 (字节)
|
S1C
|
年轻代中第二个survivor(幸存区)的容量 (字节)
|
EC
|
年轻代中Eden(伊甸园)的容量 (字节)
|
OGCMN
|
old代中初始化(最小)的大小
(字节)
|
OGCMX
|
old代的最大容量(字节)
|
OGC
|
old代当前新生成的容量 (字节)
|
OC
|
Old代的容量 (字节)
|
PGCMN
|
perm代中初始化(最小)的大小
(字节)
|
PGCMX
|
perm代的最大容量 (字节)
|
PGC
|
perm代当前新生成的容量 (字节)
|
PC
|
Perm(持久代)的容量 (字节)
|
YGC
|
从应用程序启动到采样时年轻代中gc次数
|
FGC
|
从应用程序启动到采样时old代(全gc)gc次数
|
5、jstat -gcutil :统计gc信息
显示列名
|
具体描述
|
S0
|
年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
|
S1
|
年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
|
E
|
年轻代中Eden(伊甸园)已使用的占当前容量百分比
|
O
|
old代已使用的占当前容量百分比
|
P
|
perm代已使用的占当前容量百分比
|
YGC
|
从应用程序启动到采样时年轻代中gc次数
|
YGCT
|
从应用程序启动到采样时年轻代中gc所用时间(s)
|
FGC
|
从应用程序启动到采样时old代(全gc)gc次数
|
FGCT
|
从应用程序启动到采样时old代(全gc)gc所用时间(s)
|
GCT
|
从应用程序启动到采样时gc用的总时间(s)
|
6、jstat -gcnew :年轻代对象的信息。
显示列名
|
具体描述
|
S0C
|
年轻代中第一个survivor(幸存区)的容量 (字节)
|
S1C
|
年轻代中第二个survivor(幸存区)的容量 (字节)
|
S0U
|
年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
|
S1U
|
年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
|
TT
|
持有次数限制
|
MTT
|
最大持有次数限制
|
EC
|
年轻代中Eden(伊甸园)的容量 (字节)
|
EU
|
年轻代中Eden(伊甸园)目前已使用空间 (字节)
|
YGC
|
从应用程序启动到采样时年轻代中gc次数
|
YGCT
|
从应用程序启动到采样时年轻代中gc所用时间(s)
|
7、jstat -gcnewcapacity:
年轻代对象的信息及其占用量。
显示列名
|
具体描述
|
NGCMN
|
年轻代(young)中初始化(最小)的大小(字节)
|
NGCMX
|
年轻代(young)的最大容量 (字节)
|
NGC
|
年轻代(young)中当前的容量 (字节)
|
S0CMX
|
年轻代中第一个survivor(幸存区)的最大容量 (字节)
|
S0C
|
年轻代中第一个survivor(幸存区)的容量 (字节)
|
S1CMX
|
年轻代中第二个survivor(幸存区)的最大容量 (字节)
|
S1C
|
年轻代中第二个survivor(幸存区)的容量 (字节)
|
ECMX
|
年轻代中Eden(伊甸园)的最大容量 (字节)
|
EC
|
年轻代中Eden(伊甸园)的容量 (字节)
|
YGC
|
从应用程序启动到采样时年轻代中gc次数
|
FGC
|
从应用程序启动到采样时old代(全gc)gc次数
|
8、jstat -gcold
:old代对象的信息。
显示列名
|
具体描述
|
PC
|
Perm(持久代)的容量 (字节)
|
PU
|
Perm(持久代)目前已使用空间 (字节)
|
OC
|
Old代的容量 (字节)
|
OU
|
Old代目前已使用空间 (字节)
|
YGC
|
从应用程序启动到采样时年轻代中gc次数
|
FGC
|
从应用程序启动到采样时old代(全gc)gc次数
|
FGCT
|
从应用程序启动到采样时old代(全gc)gc所用时间(s)
|
GCT
|
从应用程序启动到采样时gc用的总时间(s)
|
9、stat -gcoldcapacity : old代对象的信息及其占用量。
显示列名
|
具体描述
|
OGCMN
|
old代中初始化(最小)的大小
(字节)
|
OGCMX
|
old代的最大容量(字节)
|
OGC
|
old代当前新生成的容量 (字节)
|
OC
|
Old代的容量 (字节)
|
YGC
|
从应用程序启动到采样时年轻代中gc次数
|
FGC
|
从应用程序启动到采样时old代(全gc)gc次数
|
FGCT
|
从应用程序启动到采样时old代(全gc)gc所用时间(s)
|
GCT
|
从应用程序启动到采样时gc用的总时间(s)
|
10、jstat -gcpermcapacity: perm对象的信息及其占用量。
显示列名
|
具体描述
|
PGCMN
|
perm代中初始化(最小)的大小
(字节)
|
PGCMX
|
perm代的最大容量 (字节)
|
PGC
|
perm代当前新生成的容量 (字节)
|
PC
|
Perm(持久代)的容量 (字节)
|
YGC
|
从应用程序启动到采样时年轻代中gc次数
|
FGC
|
从应用程序启动到采样时old代(全gc)gc次数
|
FGCT
|
从应用程序启动到采样时old代(全gc)gc所用时间(s)
|
GCT
|
从应用程序启动到采样时gc用的总时间(s)
|
11、jstat -printcompilation
:当前VM执行的信息。
显示列名
|
具体描述
|
Compiled
|
编译任务的数目
|
Size
|
方法生成的字节码的大小
|
Type
|
编译类型
|
Method
|
类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的
|
jstat -gcutil详解
S0—Heap上的 Survivor space 0
区已使用空间的百分比
S1— Heap上的 Survivor space1
区已使用空间的百分比
E— Heap上的 Eden space
区已使用空间的百分比
O— Heap上的 Old space
区已使用空间的百分比
P— Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC
的次数
YGCT– 从应用程序启动到采样时 Young GC
所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC
的次数
FGCT– 从应用程序启动到采样时 Full GC
所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
实例使用1:
[root@localhostbin]# jstat -gcutil 25444
S0S1EOPYGCYGCTFGCFGCTGCT
11.630.0056.4666.9298.491620.24860.3310.579
实例使用2:(25444是java的进程号,ps
-ef | grepjava),每隔一秒显示增加一条数据,指导到达5条
[root@localhostbin]# jstat -gcutil 25444 1000 5
S0S1EOPYGCYGCTFGCFGCTGCT
73.540.0099.0467.5298.491660.25260.3310.583
73.540.0099.0467.5298.491660.25260.3310.583
73.540.0099.0467.5298.491660.25260.3310.583
73.540.0099.0467.5298.491660.25260.3310.583
73.540.0099.0467.5298.491660.25260.3310.583
分享到:
相关推荐
程序运行要用到的内存大于虚拟机能提供的最大内存就发生内存溢出了, 内存溢出的问题要看业务和系统大小而定,对于某些系统可能内存溢出不常见,但某些系统还是很常见的解决的方法
java查看哪个进程频繁GC垃圾回收
jstat用户监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行统计
jmap、jstack、jstat组合使用定位jvm问题
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。 命令的格式如下: jstat [-命令选项] [vmid] [间隔时间(毫秒)] [查询次数] 注意:使用的jdk版本是jdk8. 二、垃圾回收统计 最常用,可以评估程序内存...
jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jmap:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。 jconsole:一个...
Java内存泄露_JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat
jstat查看JVM统计信息 jstack与线程的状态 MAT 分析内存溢出的方法 可视化工具分析GC日志 通过这套视频学习如何在生产环境下进行性能监控与调优。 视频在百度网盘中,txt下载后获取网盘链接下载
jmap jstat等命令介绍,如何监控tomcat内存使用情况的资料
JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat.doc
JVM内存结构 bin工具 jmap jstat
NULL 博文链接:https://kennylee26.iteye.com/blog/1402260
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx
本文是Javascript统计学库jStat的中文参考手册。jStat是用Javascript编写的统计学库,它可以让你进行高级的统计操作而不需要专门的统计语言(如MATLAB或R)。
jstat命令手册.pdf
本文档来源于网络,简单的介绍了jconsole,jmap,jps 详细的介绍了jstat
微服务自动发现监控模板 利用Zabbix低级发现结合jstat命令自动监控JVM进程
jstat - Java Virtual Machine Statistics Monitoring Tool jstat官方介绍
通过虚拟机内置的jstat指令获取内存各种堆和非堆的大小及其内存使用量 通过虚拟机内置jstack获取虚拟机线程的执行堆栈 统计、分析之后的数据封装为用于被监控数据对象,向各种渠道的数据观察者发送监控数据...
2019最新深入理解JVM内存结构及运行原理(JVM调优)高级核心课程视频教程下载。JVM是Java知识体系中的重要部分,对JVM底层的了解是每一位Java程序员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统...