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(伊甸园)目前已使用空间 (字节)OCOld代的容量 (字节)OUOld代目前已使用空间 (字节)PCPerm(持久代)的容量 (字节)PUPerm(持久代)目前已使用空间 (字节)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(伊甸园)的容量 (字节)OGCMNold代中初始化(最小)的大小 (字节)OGCMXold代的最大容量(字节)OGCold代当前新生成的容量 (字节)OCOld代的容量 (字节)PGCMNperm代中初始化(最小)的大小 (字节)PGCMXperm代的最大容量 (字节)PGCperm代当前新生成的容量 (字节)PCPerm(持久代)的容量 (字节)YGC从应用程序启动到采样时年轻代中gc次数FGC从应用程序启动到采样时old代(全gc)gc次数
5、jstat -gcutil <pid>:统计gc信息
S0年轻代中第一个survivor(幸存区)已使用的占当前容量百分比S1年轻代中第二个survivor(幸存区)已使用的占当前容量百分比E年轻代中Eden(伊甸园)已使用的占当前容量百分比Oold代已使用的占当前容量百分比Pperm代已使用的占当前容量百分比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代对象的信息。
PCPerm(持久代)的容量 (字节)PUPerm(持久代)目前已使用空间 (字节)OCOld代的容量 (字节)OUOld代目前已使用空间 (字节)YGC从应用程序启动到采样时年轻代中gc次数FGC从应用程序启动到采样时old代(全gc)gc次数FGCT从应用程序启动到采样时old代(全gc)gc所用时间(s)GCT从应用程序启动到采样时gc用的总时间(s)
9、stat -gcoldcapacity <pid>: old代对象的信息及其占用量。
OGCMNold代中初始化(最小)的大小 (字节)OGCMXold代的最大容量(字节)OGCold代当前新生成的容量 (字节)OCOld代的容量 (字节)YGC从应用程序启动到采样时年轻代中gc次数FGC从应用程序启动到采样时old代(全gc)gc次数FGCT从应用程序启动到采样时old代(全gc)gc所用时间(s)GCT从应用程序启动到采样时gc用的总时间(s)
10、jstat -gcpermcapacity<pid>: perm对象的信息及其占用量。
PGCMNperm代中初始化(最小)的大小 (字节)PGCMXperm代的最大容量 (字节)PGCperm代当前新生成的容量 (字节)PCPerm(持久代)的容量 (字节)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 ...
随机推荐
- mysql存储过程之游标
MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就是为以后的 ...
- Orleans介绍
一.介绍 Orleans是一个框架,提供了一个直接的方法来构建分布式高规模计算应用程序 默认可扩展 -> Orleans处理构建分布式系统的复杂性,使您的应用程序能够扩展到数百台服务器.低延迟 ...
- Android-Start方式和Bind方式混合开启Service
Android-Start方式和Bind方式混合开启Service 需求如下 需要开发一个音乐APP,需要满足以下的需求: 当退出所有的Activity后仍然能够播放音乐 能够控制音乐的播放比如说,暂 ...
- [BZOJ3585]mex(莫队+分块)
显然可以离线主席树,这里用莫队+分块做.分块的一个重要思想是实现修改与查询时间复杂度的均衡,这里莫队和分块互相弥补. 考虑暴力的分块做法,首先显然大于n的数直接忽略,于是将值域分成sqrt(n)份,每 ...
- BZOJ.4819.[SDOI2017]新生舞会(01分数规划 费用流SPFA)
BZOJ 洛谷 裸01分数规划.二分之后就是裸最大费用最大流了. 写的朴素SPFA费用流,洛谷跑的非常快啊,为什么有人还T成那样.. 当然用二分也很慢,用什么什么迭代会很快. [Update] 19. ...
- poj 1511 优先队列优化dijkstra *
题意:两遍最短路 链接:点我 注意结果用long long #include<cstdio> #include<iostream> #include<algorithm& ...
- BZOJ4268 : 小强的书架
首先将所有高度乘上10,设f[i]为将前i本书放入书架的最小高度,则 \[\begin{eqnarray*}f[i]&=&\min(f[j-1]+first(j,i)+second(j ...
- error/exception/runtime exception区别
(1)java中的异常是什么? 异常指的是程序运行过程中出现的非正常情况或错误,当程序违反了语义规则时,jvm就会将出现的错误表示为一个异常抛出.在java中,一切皆对象,异常也是,它被当作一个对象, ...
- 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem I. Interest Targeting 模拟题
Problem I. Interest Targeting 题目连接: http://codeforces.com/gym/100714 Description A unique display ad ...
- Linux学习笔记07—mysql的配置
一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱 ...