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(伊甸园)目前已使用空间 (字节)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选项进行设置的
转: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 ...
随机推荐
- unity之初级必备知识
C#中有两种常见类型:值类型,引用类型.值类型存放在内存中栈里,引用类型在内存中栈里存放引用,实际存放在内存中的堆里.值类型继承自System.ValueType.System.ValueType继承 ...
- JS核心之DOM操作 上
JS一个重要功能就是操作DOM, 改变页面显示. 目录: 1.基本概念 2.节点类型 3.节点关系 4.节点操作 基本概念 DOM全称为Document Object Model ,即文档对象模型,是 ...
- 通过Web安全工具Burp suite找出网站中的XSS漏洞实战(二)
一.背景 笔者6月份在慕课网录制视频教程XSS跨站漏洞 加强Web安全,里面需要讲到很多实战案例,在漏洞挖掘案例中分为了手工挖掘.工具挖掘.代码审计三部分内容,手工挖掘篇参考地址为快速找出网站中可能存 ...
- Jedis操作Redis--SortedSet类型
/** * SortedSet(有序集合) * ZADD,ZCARD,ZCOUNT,ZINCRBY,ZRANGE,ZRANGEBYSCORE,ZRANK,ZREM,ZREMRANGEBYRANK,ZR ...
- CentOS 源码安装MySQL5.7
一.安装方式源码安装,源码包名称mysql-boost-5.7.27.tar.gz,此版本包含boost库,在解压后的boost路径下.安装时,可以-DDOWNLOAD_BOOST=1 -DWITH_ ...
- [python]代码中包含中文,提示:SyntaxError: Non-ASCII character '\xcd'
解决方法: 把文件编码方式改为gbk即可.在代码开头写上: # coding=gbk
- 洛谷P1246编码问题-排列组合,分类讨论
编码问题 题意就是a,b,c.....ab.....编码,给你一个字符串,输出这是第几个: 这里可以用暴力枚举,但也可以用组合数学的高超知识: 既然这样我就说一下排列组合的方法,如果要弄一个 各位数字 ...
- Count on a tree 树上区间第K小
Count on a tree 题意:求路径 u到v上的 第k小的权重. 题解:先DFS建数, 然后对于每个节点往上跑出一颗主席树, 然后每次更新. 查询的时候, u, v, k, 找到 z = l ...
- 工程点点app爬虫和sign算法破解
这世界真的什么人都有,哎,继续分析. 通过对工程点点的逆向和抓包分析,发现工程点点需要x-sign和token验证. this.b.a(aVar.b("Accept", " ...
- github 授权登录教程与如何设计第三方授权登录的用户表
需求:在网站上想评论一篇文章,而评论文章是要用户注册与登录的,那么怎么免去这麻烦的步骤呢?答案是通过第三方授权登录.本文讲解的就是 github 授权登录的教程. 效果体验地址:http://biao ...