linux打印堆栈日志jstat,JVM调优排错工具jps、jstack、jmap、jhat、jstat、jvisualvm等的使用...

1. 介绍

“纸上得来终觉浅,绝知此事要躬行。”最近发现自己在JVM调优工具的使用上还存在知识盲区,故尽快调研了一些资料,总结一下这些工具的使用,以供以后自己复习查看。

JDK提供的小巧工具简单介绍一览如下:

名称

作用

jps

JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程

jstat

JVM Statistics Monitoring Tool,显示收集HptSpot虚拟机各方面的运行数据

jinfo

Configuration Info For java,显示虚拟机配置信息

jmap

Memory Map for Java,生成虚拟机的内存转储快照(heapdump)

jhat

Stack Trace for Java显示虚拟机的线程快照

2. GC日志

首先需要在启动JVM时候加上参数来打开GC日志。GC日志参数说明如下:

期中-verbose.gc也可以写成-XX:+PrintGC

注意下图中有些地方大小写错误了,例如第二行的-XX需要大写,请知悉

4be942b3389344f94c7a87dd2d958bff.png

2.1 -XX:+printGC查看简单的GC日志

参数-XX:+PrintGC(或者-verbose:gc)开启了简单GC日志模式,为每一次新生代(young generation)的GC和每一次的Full GC打印一行信息。

下面来实际使用下:

在IDEA中设置相关的VM参数

9c47e4cd9a7996b00b841b7dff62cf11.png

然后启动一个项目。我这里启动的是阿里的一个开源项目otter,可以看到程序运行过程中,每次发生full GC或者minor GC都会有相关的信息输出

f011d9b95b856ba99837c36fec3c4a88.png

每行开始首先是GC的类型(可以是“GC”或者“Full GC”),然后是在GC之前和GC之后已使用的堆空间,再然后是当前的堆容量,最后是GC持续的时间(以秒计)。

简单模式的GC日志格式是与GC算法无关的,日志也没有提供太多的信息。在上面的例子中,我们甚至无法从日志中判断是否GC将一些对象从young generation移到了old generation。所以详细模式的GC日志更有用一些。

2.2 -XX:PrintGCDetails

1d6b6e4b81ec75c50faa4a8bc4604325.png

39ffed80756b273a15318995f6561f75.png

如果不是使用-XX:+PrintGC,而是-XX:PrintGCDetails,就开

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值