JVM学习笔记3:GC日志和常用命令工具

本篇是系列的第三篇,本篇会简单介绍GC日志如何查看以及常用的命令行工具使用方法。其实Java性能诊断和故障排除可以更多地使用阿里开源的arthas:https://github.com/alibaba/arthas。

1、GC日志查看

以下面为例(来自《深入理解Java虚拟机》):
33.125: [GC[DefNew:3324K ->152K(3712K),0.0025925 secs]  3324K ->152K(11940K),0.0031680  secs]
100.667:[Full GC [Tenured:0K->210K(10240K),0.00149142  secs] 4603K ->210K(19456K),[Perm:2999K ->2999K(21248K)],0.015007 secs]  [Times : user=0.01,sys=0.00,real=0.02 secs]
最前面的数字“100.67”代表GC发生的时间,指的是JVM启动以来的秒数。
开头的“[GC”和“[Full GC”代表停顿类型,Full表示发生了Stop the world。
然后"[DefNew"、"[Tenurde"和"[Perm"表示GC发生区域,和GC收集器有关,"Default New Generation"表示默认的Serial收集器的新生代GC,显示"DefNew"。
方括号内的“3324K ->152K(3712K)”表示“GC前该区域已使用容量 ->GC后该区域已使用容量(该区域总容量)”。方括号外的 "3324K ->152K(11904K)"表示“GC前对已使用容量 ->GC后堆已使用容量(堆总容量)”。
后面的时间“0.0025925 secs”表示该区域GC消耗时间。“ [Times : user=0.01,sys=0.00,real=0.02 secs]”分别表示用户态CPU时间,内核态CPU时间和GC开始到结束的Wall Clock Time。
更多请参阅JDK文档和相关文档。

2、常用命令工具

常用的命令行工具有:jps、jstat、jinfo、jmap、jstack。而更多的可视化工具如jconsole、visualVM等暂不介绍,读者有兴趣请参阅相关文档。

2.1 jps

jps用来查看虚拟机进程.既可以看本机java进程,也可以查看远程主机java进程。
用法:jps    [options]   [hostid]
一般“jps -mlv”就能看到比较详细的主类和PID。

2.2 jstat

jstat:JVM Statistics Monitoring Tool,主要用于监视JVM各种运行状态。输入 “--help”查看使用方法。
用法:jstat  [option vmid  [interval [s|ms] [count] ] ]
实例:
D:\git\git\java-parent>jstat -gcutil 1696

S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT
0.00 0.00 19.23 0.00 - - 0 0.000 0 0.000 0 0.000 0.000

 这里新生代Eden区域使用19.23%空间,Survivor(S0,S1)都是空的,老年代O-old为空的,元空间M-metaspace和CCS压缩的类空间未统计,Young GC(Minor GC)的发生0次,Young GC TIme为0.00s,Full GC 次数和Full GC Time都是0,CCS压缩的类空间的GC此时和GC时间都是0,总的GC 时间是0

更多用法请参阅JDK Tools文档:https://docs.oracle.com/en/java/javase/11/tools/jstat.html

2.3 jinfo

jinfo:查看下JVM各种参数
用法:jinfo  [option]  pid

2.4 jmap

jmap:用于生成堆转存快照heapdump.
用法: jmap [option] vmid
实例:jmap -dump:format=b,file=dump.bin 1696

2.5 jstack

jstack:生成线程快照threaddump。
用法:jstack  [option] vmid
实例:jstack   -l 1696


上面简单介绍常用的五个命令,更多命令可以参与JDK Tools文档。此外更多地推荐阿里的开源诊断工具arthas。

引用

1.《深入理解Java虚拟机》
2. [JDK Tools文档](https://docs.oracle.com/en/java/javase/11/tools)
posted @ 2019-03-27 21:36  Warspite  阅读(1059)  评论(0编辑  收藏  举报