Java命令:jstat(JVM Statistics Monitoring Tool)

jstat(JVM Statistics Monitoring Tool)

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基本相同,但输出主要关注已使用空间占总空间的百分比
  • –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选项进行设置的
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容