JVM——8.调优工具1(jstat)

本文详细介绍了JVM调优工具jstat的使用,特别是`jstat -gc`命令,用于监控JVM内存使用和GC情况。通过实例展示了如何分析Eden、Survivor、老年代内存以及Young GC和Full GC的执行情况,帮助开发人员掌握实时监控和诊断JVM性能问题的技巧。
摘要由CSDN通过智能技术生成

1. 使用背景

一般来说,中大型公司都会有自己的应用监控系统,比如开源的 Zabbix、Open-Falcon、Prometheus等,也可能一些公司自己实现了监控或者告警系统;这些系统可以监控所有在线上的各种应用的运行情况,一旦发生异常(比如CPU利用率过高、FullGC频繁等)会直接通过短信、邮箱或者IM工具发送告警给管理员。

但是对于开发人员来说,并不应该依赖这些监控系统;熟练的使用各种命令行工具,在命令行中就能实现问题的发现定位及解决,是一个优秀工程师的必备技能。

所以我们需要掌握一些简单易用,且高效实用的命令行jvm监控工具,来让我们日常的开发和解决问题更加高效。

2. jstat 的介绍及使用

jstat 就是JDK中自动的一个非常有用的命令,它可以展示出当前运行系统的JVM的Eden、Survivor、老年代等的内存使用情况,还能展示出Young CG、Full GC等的执行情况及耗时。

通过这些指标,我们就可以轻松的分析出当前系统的运行情况、GC情况、内存分配是否合理等。

2.1 jstat -gc PID 介绍

在服务器上执行jps(不懂的自行百度)命令,就可以看到当前服务器中正在运行的java进程,每个进程前面会有一个进程ID,也就是这里的PID。

然后使用这个PID来执行 jstat -gc PID命令:
jstat -gc PID: 只能得到当前系统运行情况的一行指标;
jstat -gc PID 1000 10:每1000毫秒(1秒)执行一次,共执行10次;
jstat -gc PID 1000:每秒执行一次,一直不停的执行;

示例:
1614240513.png

  • S0C:From Survivor区的大小;
  • S1C:To Survivor区的大小;
  • S0U:From Survivor区当前使用的内存大小;
  • S1U:To Survivor区当前使用的内存大小;
  • EC:Eden区的大小;
  • EU:Eden区当前使用的内存大小;
  • OC:老年代的大小;
  • OU:老年代当前使用的内存大小;
  • MC:方法区(永久代、元数据区)的大小;
  • MU:方法区(永久代、元数据区)的当前使用的内存大小;
  • YGC:系统运行迄今为止的Young GC次数;
  • YGCT:Young GC的耗时;
  • FGC:系统运行迄今为止的Full GC次数;
  • FGCT:Full GC的耗时;
  • CGC:Concurrent GC的次数;(JDK11)
  • CGCT:Concurrent GC的耗时;(JDK11)
  • GCT:所有GC的总耗时;

到这里,如果JVM基础好一点的同学,你应该能够发现:根据这些指标,我们就能完成JVM的各项监控了;
这个命令也是 最完整、最常用和最实用的jstat的命令

2.2 其他的 jstat命令

  • jstat -gccapacity PID:堆内存分析;
  • jstat -gcnew PID:年轻代GC分析;(TT和MTT:对象在年轻代存活的年龄和存活的最大年龄)
  • jstat -gcnewcapacity PID:年轻代内存分析;
  • jstat -gcold PID:老年代GC分析;
  • jstat -gcoldcapacity PID:老年代内存分析;
  • jstat -gcmetacapacity PID:元数据区内存分析;

这些命

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值