JVM 调优 - jstat
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选项进行设置的
转:https://www.hollischuang.com/archives/481
JVM 调优 - jstat的更多相关文章
- JVM调优- jstat(转)
jstat的用法 用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序. Jstat ...
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎 ...
- JVM调优总结 + jstat 分析(转)
[转] JVM调优总结 + jstat 分析 JVM调优总结 + jstat 分析 jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒 ...
- [转]jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer ...
- JVM调优 — 命令大全(jps jstat jmap jhat jstack jinfo)(转)
运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer ...
- jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 运用jv ...
- JVM调优实战
JVM调优实战 文档修订记录 版本 日期 撰写人 审核人 批准人 变更摘要 & 修订位置 ...
- java虚拟机学习-JVM调优总结-调优方法(12)
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...
- JVM调优常用参数和注意点备忘录
本文主要是工作过程中总结的一些jvm调优的参数和注意的地方,作为一个备忘录,先占个坑,有时间在来细化具体的实例. gc日志是覆盖的方式如果文件名字固定会导致上一次被覆盖可以采用这个-Xloggc:ba ...
随机推荐
- 设计模式(C#)——07装饰者模式
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 在一款战斗类的游戏中,随着故事情节的发展,玩家(即游戏中的主角,下文统一为主角)通常会解锁一些新技能.最初主角只有使 ...
- HDU 1517
题意略. 思路: 我们分别来考虑n取到的各个区间,从而发现其中的规律: [2,9] 明显 Stan 必胜. 但是当n = 9 + 1时,Stan无论如何也不能取胜,并且此时,假设 Stan 取值 x ...
- 数据结构C线性表现实
linearList.h #ifndef _INC_STDIO_8787 #define _INC_STDIO_8787 #include <stdio.h> #include <m ...
- Oracle - Tables
创建表 a: Sql语句创建 -- Create table create table Table_Name ( 字段1 VARCHAR2(50), 字段2 VARCHAR2(50) not null ...
- Linux搭建nginx负载均衡(两台服务器之间)
负载均衡种类 第一种:通过硬件负载解决,常见的有NetScaler.F5.Radware和Array等商用的负载均衡器,价格比较昂贵 第二种:通过软件负载解决,常见的软件有LVS.Nginx.apac ...
- [python] - profilers性能分析器
1. 性能分析器: profile, hotshot, cProfile 2. 作用: 测试函数的执行时间 每次脚本执行的总时间
- 牛客小白赛5 无关(relationship) 容斥原理(计算因子数的模板)
链接:https://www.nowcoder.com/acm/contest/135/A来源:牛客网 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关. 给出一个含有k个元素的集 ...
- poj 3169 Layout(差分约束+spfa)
题目链接:http://poj.org/problem?id=3169 题意:n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0.这些牛的距离存在着一些约束关系:1.有m ...
- (六十五)c#Winform自定义控件-图标字体
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- (转)为什么HashMap中链表长度超过8会转换成红黑树
原博地址:https://blog.csdn.net/xingfei_work/article/details/79637878 HashMap在jdk1.8之后引入了红黑树的概念,表示若桶中链表元素 ...