您的位置:首页 > 新闻 > 会展 > JVM监控及诊断工具-命令行篇-jstat命令介绍

JVM监控及诊断工具-命令行篇-jstat命令介绍

2024/12/23 23:33:33 来源:https://blog.csdn.net/weixin_43811057/article/details/140360907  浏览:    关键词:JVM监控及诊断工具-命令行篇-jstat命令介绍

JVM监控及诊断工具-命令行篇01-jstat:查看JVM统计信息

  • 一 基本情况
  • 二 基本语法
    • 2.1 option参数
      • 1. 类装载相关的:
      • 2. 垃圾回收相关的
        • `-gc`:显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息。
        • `-gccapacity`:显示内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间。
        • `-gcutil`:显示内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比。
        • `-gccause`:与-gcutil功能一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因。
        • `-gcnew`:显示新生代GC状况
        • `-gcnewcapacity`:显示内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
        • `-geold`:显示老年代GC状况
        • `-gcoldcapacity`:显示内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
        • `-gcpermcapacity`:显示永久代使用到的最大、最小空间。
      • 3. JIT相关的:
        • `-compiler`:显示JIT编译器编译过的方法、耗时等信息
        • `-printcompilation`:输出已经被JIT编译的方法 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/82a18850bf744075b573b82cea4e99d3.png)
    • 2.2 interval参数
    • 2.2 count参数
    • 2.3 -t参数
    • 2.4 -h参数
  • 三 补充

一 基本情况

jstat(JVM Statistics Monitoring Tool):用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。 在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。常用于检测垃圾回收问题以及内存泄漏问题。 官方文档

二 基本语法

它的基本使用语法为:

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] 

查看命令相关参数:

jstat -h 或 jstat -help

2.1 option参数

选项option可以由以下值构成。

1. 类装载相关的:

  • -class:显示ClassLoader的相关信息:类的装载、卸载数量、总空间、类装载所消耗的时间等
    在这里插入图片描述

2. 垃圾回收相关的

-gc:显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息。

在这里插入图片描述在这里插入图片描述

新生代相关

  • S0C是第一个幸存者区的大小(字节)
  • S1C是第二个幸存者区的大小(字节)
  • S0U是第一个幸存者区已使用的大小(字节)
  • S1U是第二个幸存者区已使用的大小(字节)
  • EC是Eden空间的大小(字节)
  • EU是Eden空间已使用大小(字节)

老年代相关

  • OC是老年代的大小(字节)
  • OU是老年代已使用的大小(字节)

方法区(元空间)相关

  • MC是方法区的大小
  • MU是方法区已使用的大小
  • CCSC是压缩类空间的大小
  • CCSU是压缩类空间已使用的大小

其它

  • YGC是指从应用程序启动到采样时young gc次数
  • YGCT是指从应用程序启动到采样时young gc消耗的时间(秒)
  • FGC是指从应用程序启动到采样时full gc次数
  • FGCT是指从应用程序启动到采样时full gc消耗的时间(秒)
  • GCT是指从应用程序启动到采样时gc的总时间
-gccapacity:显示内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间。
-gcutil:显示内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比。

在这里插入图片描述

-gccause:与-gcutil功能一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因。

在这里插入图片描述

-gcnew:显示新生代GC状况

在这里插入图片描述

-gcnewcapacity:显示内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间

在这里插入图片描述

-geold:显示老年代GC状况

在这里插入图片描述

-gcoldcapacity:显示内容与-gcold基本相同,输出主要关注使用到的最大、最小空间

在这里插入图片描述

-gcpermcapacity:显示永久代使用到的最大、最小空间。

3. JIT相关的:

-compiler:显示JIT编译器编译过的方法、耗时等信息

在这里插入图片描述

-printcompilation:输出已经被JIT编译的方法 在这里插入图片描述

2.2 interval参数

用于指定输出统计数据的周期,单位为毫秒。即:查询间隔
每隔一秒打印一次数据

在这里插入图片描述

2.2 count参数

用于指定查询的总次数
每隔一秒打印一次数据,共打印5次
在这里插入图片描述

2.3 -t参数

可以在输出信息前加上一个Timestamp列,显示程序的运行时间。单位:秒
程序的运行时间在这里插入图片描述
经验
我们可以比较 Java 进程的启动时间以及总 GC 时间(GCT 列),或者两次测量的间隔时间以及总 GC 时间的增量,来得出 GC 时间占运行时间的比例。如果该比例超过 20%,则说明目前堆的压力较大;如果该比例超过 90%,则说明堆里几乎没有可用空间,随时都可能抛出 OOM 异常。
在这里插入图片描述

2.4 -h参数

可以在周期性数据输岀时,输出多少行数据后输出一个表头信息

h表示head表头,4表示每隔4条数据打印一个表头

在这里插入图片描述

三 补充

jstat还可以用来判断是否出现内存泄漏

第1步:在长时间运行的 Java 程序中,我们可以运行jstat命令连续获取多行性能数据,并取这几行数据中 OU 列(即已占用的老年代内存)的最小值。

第2步:然后,我们每隔一段较长的时间重复一次上述操作,来获得多组 OU 最小值。如果这些值呈上涨趋势,则说明该 Java 程序的老年代内存已使用量在不断上涨,这意味着无法回收的对象在不断增加,因此很有可能存在内存泄漏。

JVM之GC 调优基础知识(一)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com