JDK 常用工具 —— jstat 详解

jstat 是 JDK 自带的一个命令行工具,全称为 Java Virtual Machine statistics monitoring tool,可以用来监视和分析 Java 应用程序的内存使用和性能情况。jstat 命令可以显示有关 Java 堆和非堆内存使用情况、类加载、垃圾回收、线程和编译器等方面的信息。

语法

jstat [ generalOption | outputOptions vmid [ interval[s|ms] [count] ] ]

参数说明:

  • generalOption:一般选项,用于设置 jstat 命令的全局行为。可以是以下选项之一:
    • -class:显示类加载情况。
    • -compiler:显示JIT编译器统计信息。
    • -gc:显示垃圾回收统计信息。
    • -gccapacity:显示垃圾回收堆内存使用情况。
    • -gcmetacapacity:显示垃圾回收非堆内存使用情况。
    • -gcnew:显示新生代垃圾回收统计信息。
    • -gcnewcapacity:显示新生代垃圾回收堆内存使用情况。
    • -gcold:显示老年代垃圾回收统计信息。
    • -gcoldcapacity:显示老年代垃圾回收堆内存使用情况。
    • -gcutil:显示垃圾回收堆内存使用情况总览。
    • -printcompilation:显示 JIT 编译器编译情况。
  • outputOptions:输出选项,用于设置 jstat 命令的输出格式。可以是以下选项之一:
    • -t:输出时间戳。
    • -h:输出帮助信息。
    • -J:输出完整的 JVM 内部信息。
  • vmid:Java 虚拟机进程 ID 或进程名。
  • interval:指定采样间隔时间,默认单位是毫秒。可以使用 s 或 ms 后缀指定单位,例如 10s 或 500ms。
  • count:指定采样次数,默认是无限次。

示例

jstat -class pid

显示加载class的数量,及所占空间等信息:

截屏2023-07-08 21.55.53
显示列名具体描述
Loaded装载的类的数量
Bytes装载类所占用的字节数
Unloaded卸载类的数量
Bytes卸载类的字节数
Time装载和卸载类所花费的时间

jstat -compiler pid

显示VM实时编译的数量等信息:

截屏2023-07-08 21.59.16
显示列名具体描述
Compiled编译任务执行数量
Failed编译任务执行失败数量
Invalid编译任务执行失效数量
Time编译任务消耗时间
FailedType最后一个编译失败任务的类型
FailedMethod最后一个编译失败任务所在的类及方法

jstat -gc pid

可以显示gc的信息,查看gc的次数,及时间:

截屏2023-07-08 22.01.15
显示列名具体描述
S0C年轻代中第一个survivor(幸存区)的容量 (字节)
S1C年轻代中第二个survivor(幸存区)的容量 (字节)
S0U年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC年轻代中 Eden(伊甸园)的容量 (字节)
EU年轻代中 Eden(伊甸园)目前已使用空间 (字节)
OC老年代的容量 (字节)
OU老年代目前已使用空间 (字节)
PCPerm(持久代)的容量 (字节)
PUPerm(持久代)目前已使用空间 (字节)
YGC从应用程序启动到采样时年轻代中 gc 次数
YGCT从应用程序启动到采样时年轻代中 gc 所用时间(s)
FGC从应用程序启动到采样时老年代(full gc) gc 次数
FGCT从应用程序启动到采样时老年代(full gc) gc 所用时间(s)
GCT从应用程序启动到采样时 gc 用的总时间(s)

jstat -gccapacity pid

显示 VM 内存中三代(young, old, perm)对象的使用和占用大小:

截屏2023-07-08 22.04.56
显示列名具体描述
NGCMN年轻代(young)中初始化(最小)的大小(字节)
NGCMX年轻代(young)的最大容量 (字节)
NGC年轻代(young)中当前的容量 (字节)
S0C年轻代中第一个 survivor(幸存区)的容量 (字节)
S1C年轻代中第二个 survivor(幸存区)的容量 (字节)
EC年轻代中 Eden(伊甸园)的容量 (字节)
OGCMN老年代中初始化(最小)的大小 (字节)
OGCMX老年代的最大容量(字节)
OGC老年代当前新生成的容量 (字节)
OC老年代的容量 (字节)
PGCMNperm 代中初始化(最小)的大小 (字节)
PGCMXperm 代的最大容量 (字节)
PGCperm 代当前新生成的容量 (字节)
PCperm(持久代)的容量 (字节)
YGC从应用程序启动到采样时年轻代中 gc 次数
FGC从应用程序启动到采样时老年代(full gc) gc 次数

jstat -gcutil pid

统计 gc 信息:

截屏2023-07-08 22.09.33
显示列名具体描述
S0年轻代中第一个 survivor(幸存区)已使用的占当前容量百分比
S1年轻代中第二个 survivor(幸存区)已使用的占当前容量百分比
E年轻代中 Eden(伊甸园)已使用的占当前容量百分比
O老年代已使用的占当前容量百分比
Pperm 代已使用的占当前容量百分比
YGC从应用程序启动到采样时年轻代中 gc 次数
YGCT从应用程序启动到采样时年轻代中 gc 所用时间(s)
FGC从应用程序启动到采样时老年代(full gc) gc 次数
FGCT从应用程序启动到采样时老年代(full gc) gc 所用时间(s)
GCT从应用程序启动到采样时 gc 用的总时间(s)

参考链接

  1. https://blog.csdn.net/zhaozheng7758/article/details/8623549

  2. https://www.linuxprobe.com/detailed-jstat-command.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值