Java jstat 基本使用 gc 查看,jstat -gcutil等

jstat(Java Statistics Monitoring Tool)是JDK自带的一个命令行工具,用于监视Java虚拟机(JVM)的各种运行时性能统计信息,如垃圾收集、内存使用情况等。它允许用户无需附加到目标Java进程中,即可查看诸如堆内存、方法区、垃圾收集器活动等详细统计数据。这对于分析Java应用的性能问题和调优特别有帮助。

使用 jstat 时,你可以指定不同的选项来查看不同类型的统计信息。基本的命令格式如下:

jstat [options] <vmid> [interval] [count]
  • options:指定要查看的统计类型,例如 -gc 用于查看垃圾收集相关信息。
  • <vmid>:Java虚拟机进程的进程ID(PID)。
  • interval:查询间隔时间(秒),用于定期输出统计信息。
  • count:总共查询的次数。如果不指定,默认为一次。

以下是一些具体的使用示例:

  1. 查看某个Java进程的垃圾收集概要信息

    jstat -gc 12345
    

    这将显示与进程ID为12345的Java应用相关的垃圾收集统计信息,包括新生代、老年代、元空间(或永久代)等的使用情况。

  2. 每隔5秒输出一次GC信息,共输出5次

    jstat -gc 12345 5 5
    

    这个命令将每5秒获取一次进程12345的垃圾收集信息,并总共输出5次。

jstat 提供了丰富的选项来满足不同监控需求,比如 -gccapacity 查看内存容量,-class 查看类加载信息等。具体可用的选项可以通过运行 jstat -help 来查看。

jstat -gcutil

命令 jstat -gcutil 2431 1000 是用来监控Java进程ID为2553的虚拟机的垃圾收集器利用率统计信息的,每1000毫秒(即1秒)输出一次数据。

这里简要解释一下这个命令的组成部分:

  • jstat: 是Java Statistics Monitoring Tool的命令,用于监控Java虚拟机的运行时性能。
  • -gcutil: 是一个选项,表示我们想查看的是垃圾收集器的利用率统计信息。这包括了各个代(Eden Space, Survivor Space, Old Generation, Metaspace/Perm Gen等)的使用率,以及垃圾收集的时间占比等。
  • 2431 : 是你要监控的Java进程的进程ID(PID)。请确保这个PID对应的是一个正在运行的Java进程。
  • 1000: 是采样间隔时间,单位是毫秒。在这个例子中,意味着每隔1秒钟,jstat 会采集并显示一次垃圾收集的统计信息。

执行这个命令后,你将会看到类似以下格式的输出信息(具体数值会根据实际运行情况变化):

S0     S1     E      O      M      CCS    YGC    YGCT    FGC    FGCT     GCT   
 0.00  97.68  0.00  91.25  94.18  99.58    17    0.51     2    1.23    1.74

每一列分别代表:

  • S0, S1: Survivor Space中两个区域的使用率。
  • E: Eden Space的使用率。
  • O: Old Generation的使用率。
  • M: Metaspace(在Java 8及以后版本中替代Perm Gen)的使用率。
  • CCS: Concurrent Mark-Sweep Collector的压缩空间使用率(如果是使用CMS或G1垃圾收集器)。
  • YGC: Young Generation GC事件的次数。
  • YGCT: Young Generation GC所用的总时间(秒)。
  • FGC: Full GC事件的次数。
  • FGCT: Full GC所用的总时间(秒)。
  • GCT: GC总时间(包括Young和Full GC)。

请注意,根据JDK版本和使用的垃圾收集器的不同,输出的具体列可能有所差异。

常用指令

以下是一些常用的 jstat 操作指令和它们的作用概述:

  1. 基本用法和帮助信息:

    • -help-options: 显示 jstat 的帮助信息和可用选项。
  2. 显示类加载信息:

    • -class: 显示类加载、卸载数量以及类加载器内存使用情况。
  3. 显示垃圾收集信息:

    • -gc: 提供垃圾收集的概要信息,包括新生代、老年代、永久代(或元空间)的容量和使用情况,以及GC事件的次数。
    • -gcutil: 类似于 -gc,但以百分比形式显示使用率。
    • -gccapacity: 显示各代的容量信息。
    • -gcnew: 显示年轻代的信息。
    • -gcnewcapacity: 显示年轻代的容量信息。
    • -gcold: 显示老年代的信息。
    • -gcoldcapacity: 显示老年代的容量信息。
    • -gcpermcapacity: 显示永久代或元空间的容量信息(取决于JVM版本)。
    • -gccause: 显示最近一次GC的原因。
  4. 与时间相关的选项:

    • 你可以在上述命令后加上时间间隔(秒)和计数来定期输出统计信息,例如 jstat -gc <pid> 1000 10 将每1000秒输出一次垃圾收集信息,总共输出10次。
  5. 其他高级选项:

    • -compiler: 显示JIT编译器的活动。
    • -printcompilation: 显示已被编译的方法以及编译的时间戳。

请注意,具体的选项和支持可能根据Java版本的不同而有所变化。使用时建议结合 -help 选项查看最准确的使用说明,并且确保你有足够的权限访问目标JVM的监控数据。此外,从上述信息来看,尽管 jstat 是一个强大的工具,但在某些Java后续版本中它可能会被其他工具或方法替代,因此也建议关注JDK的最新文档。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值