Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。参考格式如下:
jstat -options
可以列出当前JVM版本支持的选项,常见的有
- l class (类加载器)
- l compiler (JIT)
- l gc (GC堆状态)
- l gccapacity (各区大小)
- l gccause (最近一次GC统计和原因)
- l gcnew (新区统计)
- l gcnewcapacity (新区大小)
- l gcold (老区统计)
- l gcoldcapacity (老区大小)
- l gcpermcapacity (永久区大小)
- l gcutil (GC统计汇总)
- l printcompilation (HotSpot编译统计)
1、jstat –class<pid> : 显示加载class的数量,及所占空间等信息。
显示列名 |
具体描述 |
Loaded |
装载的类的数量 |
Bytes |
装载类所占用的字节数 |
Unloaded |
卸载类的数量 |
Bytes |
卸载类的字节数 |
Time |
装载和卸载类所花费的时间 |
2、jstat -compiler <pid>显示VM实时编译的数量等信息。
显示列名 |
具体描述 |
Compiled |
编译任务执行数量 |
Failed |
编译任务执行失败数量 |
Invalid |
编译任务执行失效数量 |
Time |
编译任务消耗时间 |
FailedType |
最后一个编译失败任务的类型 |
FailedMethod |
最后一个编译失败任务所在的类及方法 |
3、jstat -gc <pid>: 可以显示gc的信息,查看gc的次数,及时间。
显示列名 |
具体描述 |
S0C |
年轻代中第一个survivor(幸存区)的容量 (字节) |
S1C |
年轻代中第二个survivor(幸存区)的容量 (字节) |
S0U |
年轻代中第一个survivor(幸存区)目前已使用空间 (字节) |
S1U |
年轻代中第二个survivor(幸存区)目前已使用空间 (字节) |
EC |
年轻代中Eden(伊甸园)的容量 (字节) |
EU |
年轻代中Eden(伊甸园)目前已使用空间 (字节) |
OC |
Old代的容量 (字节) |
OU |
Old代目前已使用空间 (字节) |
PC |
Perm(持久代)的容量 (字节) |
PU |
Perm(持久代)目前已使用空间 (字节) |
YGC |
从应用程序启动到采样时年轻代中gc次数 |
YGCT |
从应用程序启动到采样时年轻代中gc所用时间(s) |
FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
GCT |
从应用程序启动到采样时gc用的总时间(s) |
4、jstat -gccapacity <pid>:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小
显示列名 |
具体描述 |
NGCMN |
年轻代(young)中初始化(最小)的大小(字节) |
NGCMX |
年轻代(young)的最大容量 (字节) |
NGC |
年轻代(young)中当前的容量 (字节) |
S0C |
年轻代中第一个survivor(幸存区)的容量 (字节) |
S1C |
年轻代中第二个survivor(幸存区)的容量 (字节) |
EC |
年轻代中Eden(伊甸园)的容量 (字节) |
OGCMN |
old代中初始化(最小)的大小 (字节) |
OGCMX |
old代的最大容量(字节) |
OGC |
old代当前新生成的容量 (字节) |
OC |
Old代的容量 (字节) |
PGCMN |
perm代中初始化(最小)的大小 (字节) |
PGCMX |
perm代的最大容量 (字节) |
PGC |
perm代当前新生成的容量 (字节) |
PC |
Perm(持久代)的容量 (字节) |
YGC |
从应用程序启动到采样时年轻代中gc次数 |
FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
5、jstat -gcutil <pid>:统计gc信息
显示列名 |
具体描述 |
S0 |
年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 |
S1 |
年轻代中第二个survivor(幸存区)已使用的占当前容量百分比 |
E |
年轻代中Eden(伊甸园)已使用的占当前容量百分比 |
O |
old代已使用的占当前容量百分比 |
P |
perm代已使用的占当前容量百分比 |
YGC |
从应用程序启动到采样时年轻代中gc次数 |
YGCT |
从应用程序启动到采样时年轻代中gc所用时间(s) |
FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
GCT |
从应用程序启动到采样时gc用的总时间(s) |
6、jstat -gcnew <pid>:年轻代对象的信息。
显示列名 |
具体描述 |
S0C |
年轻代中第一个survivor(幸存区)的容量 (字节) |
S1C |
年轻代中第二个survivor(幸存区)的容量 (字节) |
S0U |
年轻代中第一个survivor(幸存区)目前已使用空间 (字节) |
S1U |
年轻代中第二个survivor(幸存区)目前已使用空间 (字节) |
TT |
持有次数限制 |
MTT |
最大持有次数限制 |
EC |
年轻代中Eden(伊甸园)的容量 (字节) |
EU |
年轻代中Eden(伊甸园)目前已使用空间 (字节) |
YGC |
从应用程序启动到采样时年轻代中gc次数 |
YGCT |
从应用程序启动到采样时年轻代中gc所用时间(s) |
7、jstat -gcnewcapacity<pid>: 年轻代对象的信息及其占用量。
显示列名 |
具体描述 |
NGCMN |
年轻代(young)中初始化(最小)的大小(字节) |
NGCMX |
年轻代(young)的最大容量 (字节) |
NGC |
年轻代(young)中当前的容量 (字节) |
S0CMX |
年轻代中第一个survivor(幸存区)的最大容量 (字节) |
S0C |
年轻代中第一个survivor(幸存区)的容量 (字节) |
S1CMX |
年轻代中第二个survivor(幸存区)的最大容量 (字节) |
S1C |
年轻代中第二个survivor(幸存区)的容量 (字节) |
ECMX |
年轻代中Eden(伊甸园)的最大容量 (字节) |
EC |
年轻代中Eden(伊甸园)的容量 (字节) |
YGC |
从应用程序启动到采样时年轻代中gc次数 |
FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
8、jstat -gcold <pid>:old代对象的信息。
显示列名 |
具体描述 |
PC |
Perm(持久代)的容量 (字节) |
PU |
Perm(持久代)目前已使用空间 (字节) |
OC |
Old代的容量 (字节) |
OU |
Old代目前已使用空间 (字节) |
YGC |
从应用程序启动到采样时年轻代中gc次数 |
FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
GCT |
从应用程序启动到采样时gc用的总时间(s) |
9、stat -gcoldcapacity <pid>: old代对象的信息及其占用量。
显示列名 |
具体描述 |
OGCMN |
old代中初始化(最小)的大小 (字节) |
OGCMX |
old代的最大容量(字节) |
OGC |
old代当前新生成的容量 (字节) |
OC |
Old代的容量 (字节) |
YGC |
从应用程序启动到采样时年轻代中gc次数 |
FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
GCT |
从应用程序启动到采样时gc用的总时间(s) |
10、jstat -gcpermcapacity<pid>: perm对象的信息及其占用量。
显示列名 |
具体描述 |
PGCMN |
perm代中初始化(最小)的大小 (字节) |
PGCMX |
perm代的最大容量 (字节) |
PGC |
perm代当前新生成的容量 (字节) |
PC |
Perm(持久代)的容量 (字节) |
YGC |
从应用程序启动到采样时年轻代中gc次数 |
FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
GCT |
从应用程序启动到采样时gc用的总时间(s) |
11、jstat -printcompilation <pid>:当前VM执行的信息。
显示列名 |
具体描述 |
Compiled |
编译任务的数目 |
Size |
方法生成的字节码的大小 |
Type |
编译类型 |
Method |
类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的 |
相关推荐
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解 本文将对一些常用的 JVM 性能调优监控工具进行介绍,包括 jps、jstack、jmap、jhat、jstat 等工具的使用详解。这些工具对于 Java 程序员来说是必备的,...
#### 三、jps与jstat详解 - **jps**: - **用途**:显示所有Java虚拟机进程的信息,包括进程ID、启动路径等。 - **参数**: - `-q`:只输出本地虚拟机标识符,忽略主类名、JAR文件名及传递给main方法的参数。 -...
4. **jstat详解**:jstat是JDK自带的命令行工具,用于收集JVM的各种统计信息,包括类装载、内存、垃圾收集、JIT编译等。通过定期执行jstat,开发者可以分析应用的内存使用模式、垃圾收集效率等,从而判断是否需要...
### JVM内存管理与jstat工具详解 #### 一、引言 在现代软件开发中,Java虚拟机(JVM)是构建高性能应用的基础之一。为了确保应用能够在各种资源限制下稳定运行,开发者需要掌握如何有效地管理和监控JVM的内存使用...
第51节虚拟机工具-jstat详解00:09:20分钟 | 第52节虚拟机工具-jinfo详解00:05:03分钟 | 第53节虚拟机工具-jmap详解00:08:48分钟 | 第54节虚拟机工具-jhat详解00:08:10分钟 | 第55节虚拟机工具-jstack详解00:10:...
第51讲 虚拟机工具-jstat详解 00:09:20 第52讲 虚拟机工具-jinfo详解 00:05:03 第53讲 虚拟机工具-jmap详解 00:08:48 第54讲 虚拟机工具-jhat详解 00:08:10 第55讲 虚拟机工具-jstack详解 00:10:19 ...
一、`jstat` 命令详解 `jstat`命令允许开发者查看JVM的各种统计数据,包括堆内存的使用情况、类加载数量、垃圾收集统计等。其基本格式如下: ```bash jstat [-命令选项] [vmid] [间隔时间(毫秒)] [查询次数] ``` ...
【jstat工具详解】 jstat,全称Java Virtual Machine Statistics Monitoring Tool,是Java虚拟机自带的一个性能监控工具。它能够实时地监控Java虚拟机的各种运行状态,包括垃圾收集、类装载、内存使用、JVM编译等...
计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...
Java生产环境下性能监控与调优详解视频教程 jstat查看JVM统计信息 jstack与线程的状态 MAT 分析内存溢出的方法 可视化工具分析GC日志 通过这套视频学习如何在生产环境下进行性能监控与调优。 视频在百度网盘中...
### JVM监控工具详解 在Java开发与运维领域,掌握有效的监控工具对于确保应用程序的稳定运行至关重要。本文将深入探讨六种关键的JVM监控工具——`jstack`, `jconsole`, `jinfo`, `jmap`, `jdb`, `jstat`——它们...
JVM详解及优化视频教程个人觉得讲的很不错所以分享。 主要章节内容: 1、jvm内存模型 2、垃圾回收算法、机制详解 3、JVM基本监控工具jstat、jstack、jconsole等的使用 4、JVM基本调优案例讲解
Java2语言命令详解 在Java开发中,理解并掌握各种命令行工具是至关重要的,特别是对于初学者和专业开发者来说。Java2语言命令主要指Java Development Kit (JDK) 提供的一系列命令行工具,它们在Java程序的编译、...
为了监控和调试JVM的运行状态,Oracle提供了多个命令行工具,包括jps、jstack、jstat、jmap和jcmd。这些工具可以帮助开发者了解和解决性能问题,优化应用程序。 一、jps (Java Process Status) jps是查看当前系统中...
11. **jstat**: 监控JVM统计信息,如垃圾收集、内存使用等。 12. **jstack**: 显示Java线程堆栈跟踪,用于排查死锁和阻塞问题。 13. **java Mission Control (JMC)**: 是Oracle提供的一款高级性能分析工具,包含了...
### JDK内置工具使用技巧详解 #### 一、引言 JDK(Java Development Kit)作为Java编程语言的核心组件,不仅提供了必要的编译、调试及文档工具,还配备了一系列用于监控和诊断应用程序运行状态的工具。本文将详细...
Java 2语言命令详解 Java 作为一门广泛使用的编程语言,其命令行工具在开发、编译、运行和管理Java程序中起着至关重要的作用。本文将深入探讨Java 2平台(J2SE)下的主要命令及其用法,帮助开发者更好地理解和掌握...
Java 2 应用命令详解 在 Java 开发和运行环境中,掌握各种命令行工具是至关重要的。Java 2 应用命令主要指的是用于管理、编译、运行和调试 Java 程序的一系列命令。这些命令使得开发者能够在不同的操作系统上高效地...