Java jstat 基本使用 gc 查看,jstat -gcutil等
jstat(Java Statistics Monitoring Tool)是JDK自带的一个命令行工具,用于监视Java虚拟机(JVM)的各种运行时性能统计信息,如垃圾收集、内存使用情况等。它允许用户无需附加到目标Java进程中,即可查看诸如堆内存、方法区、垃圾收集器活动等详细统计数据。这对于分析Java应用的性能问题和调优特别有帮助。使用jstat时,你可以指定不同的选项来查看不同类型的统计信
jstat
(Java Statistics Monitoring Tool)是JDK自带的一个命令行工具,用于监视Java虚拟机(JVM)的各种运行时性能统计信息,如垃圾收集、内存使用情况等。它允许用户无需附加到目标Java进程中,即可查看诸如堆内存、方法区、垃圾收集器活动等详细统计数据。这对于分析Java应用的性能问题和调优特别有帮助。
使用 jstat
时,你可以指定不同的选项来查看不同类型的统计信息。基本的命令格式如下:
jstat [options] <vmid> [interval] [count]
options
:指定要查看的统计类型,例如-gc
用于查看垃圾收集相关信息。<vmid>
:Java虚拟机进程的进程ID(PID)。interval
:查询间隔时间(毫秒),用于定期输出统计信息。count
:总共查询的次数。如果不指定,默认为一次。
以下是一些具体的使用示例:
-
查看某个Java进程的垃圾收集概要信息:
jstat -gc 12345
这将显示与进程ID为12345的Java应用相关的垃圾收集统计信息,包括新生代、老年代、元空间(或永久代)等的使用情况。
-
每隔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
操作指令和它们的作用概述:
-
基本用法和帮助信息:
-help
或-options
: 显示jstat
的帮助信息和可用选项。
-
显示类加载信息:
-class
: 显示类加载、卸载数量以及类加载器内存使用情况。
-
显示垃圾收集信息:
-gc
: 提供垃圾收集的概要信息,包括新生代、老年代、永久代(或元空间)的容量和使用情况,以及GC事件的次数。-gcutil
: 类似于-gc
,但以百分比形式显示使用率。-gccapacity
: 显示各代的容量信息。-gcnew
: 显示年轻代的信息。-gcnewcapacity
: 显示年轻代的容量信息。-gcold
: 显示老年代的信息。-gcoldcapacity
: 显示老年代的容量信息。-gcpermcapacity
: 显示永久代或元空间的容量信息(取决于JVM版本)。-gccause
: 显示最近一次GC的原因。
-
与时间相关的选项:
- 你可以在上述命令后加上时间间隔(秒)和计数来定期输出统计信息,例如
jstat -gc <pid> 1000 10
将每1000秒输出一次垃圾收集信息,总共输出10次。
- 你可以在上述命令后加上时间间隔(秒)和计数来定期输出统计信息,例如
-
其他高级选项:
-compiler
: 显示JIT编译器的活动。-printcompilation
: 显示已被编译的方法以及编译的时间戳。
请注意,具体的选项和支持可能根据Java版本的不同而有所变化。使用时建议结合 -help
选项查看最准确的使用说明,并且确保你有足够的权限访问目标JVM的监控数据。此外,从上述信息来看,尽管 jstat
是一个强大的工具,但在某些Java后续版本中它可能会被其他工具或方法替代,因此也建议关注JDK的最新文档。
更多推荐
所有评论(0)