Java命令学习系列(四)——jstat
jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。
jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。
jstat 命令格式
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
参数解释:
Option — 选项,我们一般使用 -gcutil 查看gc情况
vmid — VM的进程号,即当前运行的java进程号
interval– 间隔时间,单位为秒或者毫秒
count — 打印次数,如果缺省则打印无数次
参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每250毫秒查询一次进程5828垃圾收集状况,一共查询5次,那命令行如下:
jstat -gc 5828 250 5
对于命令格式中的
VMID
与LVMID
需要特别说明下:如果是本地虚拟机进程,VMID
(Virtual Machine IDentifier,虚机标识符)和LVMID
(Local Virtual Machine IDentifier,虚机标识符)是一致的,如果是远程虚拟机进程,那VMID的格式应当是:[protocol:][//] lvmid [@hostname[:port]/servername]
option
选项option代表这用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集和运行期编译状况,具体选项及作用如下:
–
class
监视类装载、卸载数量、总空间及类装载所耗费的时间 –gc
监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等的容量 –gccapacity
监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间 –gcutil
监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 –gccause
与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 –gcnew
监视新生代GC的状况 –gcnewcapacity
监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间 –gcold
监视老年代GC的状况 –gcoldcapacity
监视内容与——gcold基本相同,输出主要关注使用到的最大和最小空间 –gcpermcapacity
输出永久代使用到的最大和最小空间 –compiler
输出JIT编译器编译过的方法、耗时等信息 –printcompilation
输出已经被JIT编译的方法
常见术语
1、jstat –class<pid> :
显示加载class的数量,及所占空间等信息。
Loaded
装载的类的数量Bytes
装载类所占用的字节数Unloaded
卸载类的数量Bytes
卸载类的字节数Time
装载和卸载类所花费的时间
2、jstat -compiler <pid>
显示VM实时编译的数量等信息。
Compiled
编译任务执行数量Failed
编译任务执行失败数量Invalid
编译任务执行失效数量Time
编译任务消耗时间FailedType
最后一个编译失败任务的类型FailedMethod
最后一个编译失败任务所在的类及方法
3、jstat -gc <pid>
: 可以显示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 <pid>:
可以显示,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 <pid>
:统计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 <pid>
:年轻代对象的信息。
S0C
年轻代中第一个survivor(幸存区)的容量 (字节)S1C
年轻代中第二个survivor(幸存区)的容量 (字节)S0U
年轻代中第一个survivor(幸存区)目前已使用空间 (字节)S1U
年轻代中第二个survivor(幸存区)目前已使用空间 (字节)TT
持有次数限制MTT
最大持有次数限制EC
年轻代中Eden(伊甸园)的容量 (字节)EU
年轻代中Eden(伊甸园)目前已使用空间 (字节)YGC
从应用程序启动到采样时年轻代中gc次数YGCT
从应用程序启动到采样时年轻代中gc所用时间(s)
7、jstat -gcnewcapacity<pid>
: 年轻代对象的信息及其占用量。
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 <pid>:
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 <pid>
: 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<pid>
: 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 <pid>
:当前VM执行的信息。
Compiled
编译任务的数目Size
方法生成的字节码的大小Type
编译类型Method
类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的from: https://www.hollischuang.com/archives/481
Java命令学习系列(四)——jstat的更多相关文章
- Java命令学习系列(7):Javap(转)
原文出处: Hollis(@Hollis_Chuang) javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码. 一般情况下,很少有人使用javap对class文件 ...
- Java命令学习系列(三)——Jmap
Java命令学习系列(三)——Jmap 2015-05-16 分类:Java 阅读(479) 评论(0) Jmap jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件.远程调试服 ...
- Java命令学习系列(二)——Jstack
Java命令学习系列(二)——Jstack 2015-04-18 分类:Java 阅读(512) 评论(0) jstack是java虚拟机自带的一种堆栈跟踪工具. 功能 jstack用于生成java虚 ...
- Java命令学习系列(零)——常见命令及Java Dump介绍
一.常用命令: 在JDK的bin目彔下,包含了java命令及其他实用工具. jps:查看本机的Java中进程信息. jstack:打印线程的栈信息,制作线程Dump. jmap:打印内存映射,制作堆D ...
- Java命令学习系列(一)——Jps
jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号. jps相当于Solaris进程工具ps.不象”pgrep java”或”ps -ef grep java”,jps ...
- Java命令学习系列(七)——javap
javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码. 一般情况下,很少有人使用javap对class文件进行反编译,因为有很多成熟的反编译工具可以使用,比如jad ...
- Java命令学习系列(六)——jinfo
jinfo可以输出java进程.core文件或远程debug服务器的配置信息.这些配置信息包括JAVA系统参数及命令行参数,如果进程运行在64位虚拟机上,需要指明-J-d64参数,如:jinfo -J ...
- Java命令学习系列(五)——jhat
jhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令.之前的文章讲到过,使用jmap可以生成Java堆的Dump文件.生成dump文件之后就可以用jhat命 ...
- Java命令学习系列(2):Jstack
转载:http://www.importnew.com/18176.html 原文出处: Hollis(@Hollis_Chuang) jstack是java虚拟机自带的一种堆栈跟踪工具. 功能 js ...
随机推荐
- vuejs、eggjs、mqtt
vuejs.eggjs.mqtt全栈式开发设备管理系统 vuejs.eggjs.mqtt全栈式开发简单设备管理系统 业余时间用eggjs.vuejs开发了一个设备管理系统,通过mqtt协议上传设备数据 ...
- vue1.0到2.0
vue1.0到2.0 vue2.0 新手教程(一) 想想自己写vue的项目也写了一年了,从vue1.0到2.0,走过不少路,填过不少坑, 下面记录一下新手从0到1的过程,本文“应该”会持续更新 首 ...
- MAC配置DNS服务器
1.brew install dnsmasq 2.cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf ...
- 008.FTP单独虚拟用户
一 单独虚拟用户概念 给每个虚拟用户单独建立目录,并建立自己的配置文件,方便单独配置权限,并可以单独制定上传目录. 二 单独为虚拟用户设置权限 2.1 创建用户单独保存虚拟用户配置文件的目录 [roo ...
- docker 网络的几种模式
docker 网络分为单机和多机,我们来了解一下docker的单机网络 docker单机网络分为以下几种: 1)bridge NetWork,使用--net=bridge指定,默认设置.2)Host ...
- CSS3利用背景渐变和background-size配合完成渐变与条纹效果[持续更新中...]
1.不等垂直条纹. <!-- 不等垂直条纹 --> <div class="div1"></div>div1 div{ width: 200px ...
- HDU3693 Math Teacher's Homework ---- 数位DP
HDU3693 Math Teacher's Homework 一句话题意 给定$n, k以及m_1, m_2, m_3, ..., m_n$求$x_1 \oplus x_2 \oplus x_3 \ ...
- Chrome导出书签瘦身,去除ADD_DATE和ICON
Chrome等浏览器导出的书签是一个html文件,每个链接是一个a标签,由于保存着添加时间和图标显得太臃肿. 原本的样子: 我们利用sublime的正则替换,变成一个清爽的样子. 正则表达式:ADD_ ...
- 1063 合并果子 2004年NOIP全国联赛普及组
题目描述 Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等 ...
- 允许mysql远程用户连接。
默认mysql是禁止远程用户连接的.连接提示: 1045,“Access denied for user 'root'@'192.168.100.1' (using password:YES)&quo ...