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)

转载于:https://www.cnblogs.com/Zafkiel/p/10611017.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值