【JVM命令系列】jstat
命令基本概述
Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。
命令格式
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。参考格式如下:
jstat -options
可以列出当前JVM版本支持的选项,常见的有
- l class (类加载器)
- l compiler (JIT)
- l gc (GC堆状态)
- l gccapacity (各区大小)
- l gccause (最近一次GC统计和原因)
- l gcnew (新区统计)
- l gcnewcapacity (新区大小)
- l gcold (老区统计)
- l gcoldcapacity (老区大小)
- l gcpermcapacity (永久区大小)
- l gcutil (GC统计汇总)
- l printcompilation (HotSpot编译统计)
参数说明
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选项进行设置的 |
参考文献:
http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html#class_option
http://nassir.iteye.com/blog/1517484
【JVM命令系列】jstat的更多相关文章
- 【JVM命令系列】jstack
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使 ...
- 【JVM命令系列】javap
命令基本概述 javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码.通过它,可以对照源代码和字节码,从而了解很多编译器内部的工作.可以在命令行窗口先用javap -help看下j ...
- 【JVM命令系列】jmap
命令基本概述 Jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.打印出某个java进程(使用pid)内存内的,所有'对象'的情况(如:产生那些对象,及其数量 ...
- JVM基础系列第15讲:JDK性能监控命令
查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...
- JVM 调优 - jstat
Java命令学习系列(四)——jstat 2015-07-31 分类:Java 阅读(11041) 评论(1) 阿里大牛珍藏架构资料,点击链接免费获取 jstat(JVM Statistics Mon ...
- JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态
JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态 2017年10月25日 Jet Ma JavaPlatform JVM故障分析系列系列文章 JVM故障分析系列之一: ...
- JVM基础系列第14讲:JVM参数之GC日志配置
说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...
- JVM基础系列第13讲:JVM参数之追踪类信息
我们都知道 JVM 在启动的时候会去加载类信息,那么我们怎么得知他加载了哪些类,又卸载了哪些类呢?我们这一节就来介绍四个 JVM 参数,使用它们我们就可以清晰地知道 JVM 的类加载信息. 为了方便演 ...
- JVM基础系列第11讲:JVM参数之堆栈空间配置
JVM 中最重要的一部分就是堆空间了,基本上大多数的线上 JVM 问题都是因为堆空间造成的 OutOfMemoryError.因此掌握 JVM 关于堆空间的参数配置对于排查线上问题非常重要. tips ...
随机推荐
- 又一流氓推广Microsoft Edge,我勒个去
最新的Windows10 的升级也是醉了,不得不吐槽一个非常流氓的浏览器推广:Microsoft Edge(这小婊砸). 为了将之前的历史包袱IE干掉,这次微软也是蛮拼的,直接把IE从电脑里干掉了,你 ...
- PHP第一天
2017年7月10日是在汉企第一天接触PHP课程,感觉公司很正规,有各种管理和考核制度,管理比较严格.下午看了他们做的第一阶段的项目,感觉挺有意思的,个人感觉PHP不仅要学会,还要熟练作用,需要多加 ...
- C++ operator bool
雕虫小技: #include <iostream> struct A{ operator bool(){ return false; } }; int main() { A a{}; if ...
- javascript 代码放在head和body的区别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt239 1,在head中时,所代表的functions只加载而不执行,执行是在 ...
- nodejs本地服务器自动重启
在我们开发node 应用的时候,一但你的应用已经启动了,这个时候如果你修改了服务端的文件,那么要是这个修改起作用,你必须手动停止服务然后再重新启动,这在开发过程中无疑是很烦人的一件事,最好是有一个能够 ...
- 个人作业1——四则运算题目生成程序(基于java)
项目代码: https://git.coding.net/YJh_/11.git 题目要求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:/ + / = / 运算符为 +, −, ×, ...
- 201521123048 《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 for (in ...
- 201521123026 《java程序设计》第七周学习总结
1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 答: public ...
- 201521123075 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. - 了解了多态就是以单一的接口操作多种类型的对象,但是对多态和继承的关系还是有点混乱. - ...
- 201521123003《Java程序设计》第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...