JVM——使用工具——jstat

介绍

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。

jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数

命令

0、jstat -options:列出所有jstat命令

class (类加载器) 
compiler (JIT) 
gc (GC堆状态) 
gccapacity (各区大小) 
gccause (最近一次GC统计和原因) 
gcnew (新区统计)
gcnewcapacity (新区大小)
gcold (老区统计)
gcoldcapacity (老区大小)
gcpermcapacity (永久区大小)
gcutil (GC统计汇总)
printcompilation (HotSpot编译统计)

1、jstat –class<pid> <刷新时间间隔(毫秒)> <打印行数> : 显示加载class的数量,及所占空间等信息。

  1. Loaded 装载的类的数量
  2. Bytes 装载类所占用的字节数
  3. Unloaded 卸载类的数量
  4. Bytes 卸载类的字节数
  5. Time 装载和卸载类所花费的时间

2、jstat -compiler <pid>显示VM实时编译的数量等信息。

  1. Compiled 编译任务执行数量
  2. Failed 编译任务执行失败数量
  3. Invalid   编译任务执行失效数量
  4. Time  编译任务消耗时间
  5. FailedType 最后一个编译失败任务的类型
  6. FailedMethod 最后一个编译失败任务所在的类及方法

3、jstat -gc <pid>: 可以显示gc的信息,查看gc的次数,及时间。

  1. S0C:第一个幸存区的大小
  2. S1C:第二个幸存区的大小
  3. S0U:第一个幸存区的使用大小
  4. S1U:第二个幸存区的使用大小
  5. EC:伊甸园区的大小
  6. EU:伊甸园区的使用大小
  7. OC:老年代大小
  8. OU:老年代使用大小
  9. MC:方法区大小
  10. MU:方法区使用大小
  11. CCSC:压缩类空间大小
  12. CCSU:压缩类空间使用大小
  13. YGC:年轻代垃圾回收次数
  14. YGCT:年轻代垃圾回收消耗时间
  15. FGC:老年代垃圾回收次数
  16. FGCT:老年代垃圾回收消耗时间
  17. GCT:垃圾回收消耗总时间

4、jstat -gccapacity <pid>:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小

  1. NGCMN:新生代最小容量
  2. NGCMX:新生代最大容量
  3. NGC:当前新生代容量
  4. S0C:第一个幸存区大小
  5. S1C:第二个幸存区的大小
  6. EC:伊甸园区的大小
  7. OGCMN:老年代最小容量
  8. OGCMX:老年代最大容量
  9. OGC:当前老年代大小
  10. OC:当前老年代大小
  11. MCMN:最小元数据容量
  12. MCMX:最大元数据容量
  13. MC:当前元数据空间大小
  14. CCSMN:最小压缩类空间大小
  15. CCSMX:最大压缩类空间大小
  16. CCSC:当前压缩类空间大小
  17. YGC:年轻代gc次数
  18. FGC:老年代GC次数

5、jstat -gcutil <pid>:统计gc信息

  1. S0:幸存1区当前使用比例
  2. S1:幸存2区当前使用比例
  3. E:伊甸园区使用比例
  4. O:老年代使用比例
  5. M:元数据区使用比例
  6. CCS:压缩使用比例
  7. YGC:年轻代垃圾回收次数
  8. FGC:老年代垃圾回收次数
  9. FGCT:老年代垃圾回收消耗时间
  10. GCT:垃圾回收消耗总时间

6、jstat -gcnew <pid>:年轻代对象的信息。

  1. S0C:第一个幸存区大小
  2. S1C:第二个幸存区的大小
  3. S0U:第一个幸存区的使用大小
  4. S1U:第二个幸存区的使用大小
  5. TT:对象在新生代存活的次数
  6. MTT:对象在新生代存活的最大次数
  7. DSS:期望的幸存区大小
  8. EC:伊甸园区的大小
  9. EU:伊甸园区的使用大小
  10. YGC:年轻代垃圾回收次数
  11. YGCT:年轻代垃圾回收消耗时间

7、jstat -gcnewcapacity<pid>: 年轻代对象的信息及其占用量。

  1. NGCMN:新生代最小容量
  2. NGCMX:新生代最大容量
  3. NGC:当前新生代容量
  4. S0CMX:最大幸存1区大小
  5. S0C:当前幸存1区大小
  6. S1CMX:最大幸存2区大小
  7. S1C:当前幸存2区大小
  8. ECMX:最大伊甸园区大小
  9. EC:当前伊甸园区大小
  10. YGC:年轻代垃圾回收次数
  11. FGC:老年代回收次数

8、jstat -gcold <pid>:old代对象的信息。

  1. MC:方法区大小
  2. MU:方法区使用大小
  3. CCSC:压缩类空间大小
  4. CCSU:压缩类空间使用大小
  5. OC:老年代大小
  6. OU:老年代使用大小
  7. YGC:年轻代垃圾回收次数
  8. FGC:老年代垃圾回收次数
  9. FGCT:老年代垃圾回收消耗时间
  10. GCT:垃圾回收消耗总时间

9、jstat -gcoldcapacity <pid>: old代对象的信息及其占用量。

  1. OGCMN:老年代最小容量
  2. OGCMX:老年代最大容量
  3. OGC:当前老年代大小
  4. OC:老年代大小
  5. YGC:年轻代垃圾回收次数
  6. FGC:老年代垃圾回收次数
  7. FGCT:老年代垃圾回收消耗时间
  8. GCT:垃圾回收消耗总时间

10、jstat -gcmetacapacity<pid>: meta对象的信息及其占用量。

  1. MCMN:最小元数据容量
  2. MCMX:最大元数据容量
  3. MC:当前元数据空间大小
  4. CCSMN:最小压缩类空间大小
  5. CCSMX:最大压缩类空间大小
  6. CCSC:当前压缩类空间大小
  7. YGC:年轻代垃圾回收次数
  8. FGC:老年代垃圾回收次数
  9. FGCT:老年代垃圾回收消耗时间
  10. GCT:垃圾回收消耗总时间
     

11、jstat -printcompilation <pid>:当前VM执行的信息。

  1. Compiled:最近编译方法的数量
  2. Size:最近编译方法的字节码数量
  3. Type:最近编译方法的编译类型。
  4. Method:方法名标识。

 

具体使用查看gc情况

查看进程id

ps -ef|grep java

查看进程id为43的gc情况,每隔1秒打印一次,打印500次

jstat -gcutil 43 1000 500

垃圾回收统计

jstat -gc 43 1000 500

 

堆内存 = 年轻代 + 年老代 + 永久代

年轻代 = Eden区 + 两个Survivor区(From和To)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值