. jstat -gc pid
可以显示gc的信息,查看gc的次数,及时间。
其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
2.jstat -gccapacity pid
可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,
如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,
PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。
其他的可以根据这个类推, OC是old内纯的占用量。
3.jstat -gcutil pid
统计gc信息统计。
4.jstat -gcnew pid
年轻代对象的信息。
5.jstat -gcnewcapacity pid
年轻代对象的信息及其占用量。
6.jstat -gcold pid
old代对象的信息。
7.stat -gcoldcapacity pid
old代对象的信息及其占用量。
8.jstat -gcpermcapacity pid
perm对象的信息及其占用量。
9.jstat -class pid
显示加载class的数量,及所占空间等信息。
10.jstat -compiler pid
显示VM实时编译的数量等信息。
11.stat -printcompilation pid
当前VM执行的信息。
一些术语的中文解释:
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)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制
sun 官方文档 http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html
refs:http://hi.baidu.com/savagert/item/6a056619d25bb6426926bb38
- 用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。
- Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显
- 一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
- jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。
- 执行:cd $JAVA_HOME/bin中执行jstat,注意jstat后一定要跟参数。
- jstat :对VM内存使用量进行监控。
- jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。
- jstat -class pid:显示加载class的数量,及所占空间等信息。
- jstat -compiler pid:显示VM实时编译的数量等信息。
- jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
- jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
- jstat -gcnew pid:new对象的信息。
- jstat -gcnewcapacity pid:new对象的信息及其占用量。
- jstat -gcold pid:old对象的信息。
- jstat -gcoldcapacity pid:old对象的信息及其占用量。
- jstat -gcpermcapacity pid: perm对象的信息及其占用量。
- jstat -util pid:统计gc信息统计。
- jstat -printcompilation pid:当前VM执行的信息。
- 除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。
- 语法结构:
- Usage: jstat -help|-options
- jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
- 参数解释:
- Options — 选项,我们一般使用 -gcutil 查看gc情况
- vmid — VM的进程号,即当前运行的java进程号
- interval– 间隔时间,单位为秒或者毫秒
- count — 打印次数,如果缺省则打印无数次
- S0 — Heap上的 Survivor space 0 区已使用空间的百分比
- S1 — Heap上的 Survivor space 1 区已使用空间的百分比
- E — Heap上的 Eden space 区已使用空间的百分比
- O — Heap上的 Old space 区已使用空间的百分比
- P — Perm space 区已使用空间的百分比
- YGC — 从应用程序启动到采样时发生 Young GC 的次数
- YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
- FGC — 从应用程序启动到采样时发生 Full GC 的次数
- FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
- GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
- 实例使用1:
- [root@localhost bin]# jstat -gcutil 25444
- S0 S1 E O P YGC YGCT FGC FGCT GCT
- 11.63 0.00 56.46 66.92 98.49 162 0.248 6 0.331 0.579
- 实例使用2:(25444是java的进程号,ps -ef | grep java)
- [root@localhost bin]# jstat -gcutil 25444 1000 5
- S0 S1 E O P YGC YGCT FGC FGCT GCT
- 73.54 0.00 99.04 67.52 98.49 166 0.252 6 0.331 0.583
- 73.54 0.00 99.04 67.52 98.49 166 0.252 6 0.331 0.583
- 73.54 0.00 99.04 67.52 98.49 166 0.252 6 0.331 0.583
- 73.54 0.00 99.04 67.52 98.49 166 0.252 6 0.331 0.583
- 73.54 0.00 99.04 67.52 98.49 166 0.252 6 0.331 0.583
- 我们可以看到,5次young gc之后,垃圾内存被从Eden space区(E)放入了Old space区(O),并引起了百分比的变化,导致Survivor space使用的百分比从73.54%(S0)降到0%(S1)。有效释放了内存空间。绿框中,我们可以看到,一次full gc之后,Old space区(O)的内存被回收,从99.05%降到67.52%。
- 图中同时打印了young gc和full gc的总次数、总耗时。而,每次young gc消耗的时间,可以用相间隔的两行YGCT相减得到。每次full gc消耗的时间,可以用相隔的两行FGCT相减得到。例如红框中表示的第一行、第二行之间发生了1次young gc,消耗的时间为0.252-0.252=0.0秒。
- 常驻内存区(P)的使用率,始终停留在98.49%左右,说明常驻内存没有突变,比较正常。
- 如果young gc和full gc能够正常发生,而且都能有效回收内存,常驻内存区变化不明显,则说明java内存释放情况正常,垃圾回收及时,java内存泄露的几率就会大大降低。但也不能说明一定没有内存泄露。
- GCT 是YGCT 和FGCT的时间总和。
- 以上,介绍了Jstat按百分比查看gc情况的功能。其实,它还有功能,例如加载类信息统计功能、内存池信息统计功能等,那些是以绝对值的形式打印出来的,比较少用,在此就不做介绍。
- [root@localhost bin]# ps -ef | grep java
- root 25917 1 2 23:23 pts/2 00:00:05 /usr/local/jdk1.5/bin/java -Djava.endorsed.dirs=/usr/local/jakarta-tomcat-5.0.30/common/endorsed -classpath /usr/local/jdk1.5/lib/tools.jar:/usr/local/jakarta-tomcat-5.0.30/bin/bootstrap.jar:/usr/local/jakarta-tomcat-5.0.30/bin/commons-logging-api.jar -Dcatalina.base=/usr/local/jakarta-tomcat-5.0.30 -Dcatalina.home=/usr/local/jakarta-tomcat-5.0.30 -Djava.io.tmpdir=/usr/local/jakarta-tomcat-5.0.30/temp org.apache.catalina.startup.Bootstrap start
- jstat -class pid:显示加载class的数量,及所占空间等信息。
- 实例使用3:
- [root@localhost bin]# jstat -class 25917
- Loaded Bytes Unloaded Bytes Time
- 2629 2916.8 29 24.6 0.90
- jstat -compiler pid:显示VM实时编译的数量等信息。
- 实例使用4:
- [root@localhost bin]# jstat -compiler 25917
- Compiled Failed Invalid Time FailedType FailedMethod
- 768 0 0 0.70 0
- jstat –gccapacity :可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
- [root@localhost bin]# jstat -gccapacity 25917
- NGCMN 640.0
- NGCMX 4992.0
- NGC 832.0
- S0C 64.0
- S1C 64.0
- EC 704.0
- OGCMN 1408.0
- OGCMX 60544.0
- OGC 9504.0
- OC 9504.0 OC是old内纯的占用量
- PGCMN 8192.0 PGCMN显示的是最小perm的内存使用量
- PGCMX 65536.0 PGCMX显示的是perm的内存最大使用量
- PGC 12800.0 PGC是当前新生成的perm内存占用量
- PC 12800.0 PC是但前perm内存占用量
- YGC 164
- FGC 6
- jstat -gcnew pid: new对象的信息
- [root@localhost bin]# jstat -gcnew 25917
- S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
- 64.0 64.0 47.4 0.0 2 15 32.0 704.0 145.7 168 0.254
- jstat -gcnewcapacity pid: new对象的信息及其占用量
- [root@localhost bin]# jstat -gcnewcapacity 25917
- NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
- 640.0 4992.0 832.0 64.0 448.0 448.0 64.0 4096.0 704.0 168 6
- jstat -gcold pid: old对象的信息。
- [root@localhost bin]# jstat -gcold 25917
- PC PU OC OU YGC FGC FGCT GCT
- 12800.0 12617.6 9504.0 6561.3 169 6 0.335 0.591
- jstat -gcoldcapacity pid:old对象的信息及其占用量。
- [root@localhost bin]# jstat -gcoldcapacity 25917
- OGCMN OGCMX OGC OC YGC FGC FGCT GCT
- 1408.0 60544.0 9504.0 9504.0 169 6 0.335 0.591
- jstat -gcpermcapacity pid: perm对象的信息及其占用量。
- [root@localhost bin]# jstat -gcpermcapacity 25917
- PGCMN PGCMX PGC PC YGC FGC FGCT GCT
- 8192.0 65536.0 12800.0 12800.0 169 6 0.335 0.591
- jstat -printcompilation pid:当前VM执行的信息。
- [root@localhost bin]# jstat -printcompilation -h3 25917 1000 5
- 每1000毫秒打印一次,一共打印5次,还可以加上-h3每三行显示一下标题。
- Compiled Size Type Method
- 788 73 1 java/io/File <init>
- 788 73 1 java/io/File <init>
- 788 73 1 java/io/File <init>
- Compiled Size Type Method
- 788 73 1 java/io/File <init>
- 788 73 1 java/io/File <init>
相关推荐
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解 本文将对一些常用的 JVM 性能调优监控工具进行介绍,包括 jps、jstack、jmap、jhat、jstat 等工具的使用详解。这些工具对于 Java 程序员来说是必备的,...
### JVM内存管理与jstat工具详解 #### 一、引言 在现代软件开发中,Java虚拟机(JVM)是构建高性能应用的基础之一。为了确保应用能够在各种资源限制下稳定运行,开发者需要掌握如何有效地管理和监控JVM的内存使用...
下面我们将详细探讨如何使用`jstat`工具以及通过配置GC日志来分析和优化Java进程。 `jstat`是Java虚拟机内置的一个命令行工具,用于实时监控JVM的各种运行状态,包括垃圾回收的信息。要查看哪个进程频繁进行GC,...
一、`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理论介绍,学习...
### VisualVM 使用详解 #### 一、VisualVM简介 VisualVM是一款由Oracle提供的免费、开源的可视化工具,用于监控和调试Java应用程序。该工具能够帮助开发者深入理解Java虚拟机(JVM)上的应用程序行为,提供了丰富的...
### JDK内置工具使用技巧详解 #### 一、引言 JDK(Java Development Kit)作为Java编程语言的核心组件,不仅提供了必要的编译、调试及文档工具,还配备了一系列用于监控和诊断应用程序运行状态的工具。本文将详细...
### JVM监控工具详解 在Java开发与运维领域,掌握有效的监控工具对于确保应用程序的稳定运行至关重要。本文将深入探讨六种关键的JVM监控工具——`jstack`, `jconsole`, `jinfo`, `jmap`, `jdb`, `jstat`——它们...
它集成了多种原本独立存在的命令行工具,如`jstat`, `JConsole`, `jstack`, `jmap`, 和 `jinfo`,并通过一个统一的图形用户界面(GUI)提供了更加直观的使用体验。 - **核心功能**: - **监视**:监控Java应用程序...
JVM详解及优化视频教程个人觉得讲的很不错所以分享。 主要章节内容: 1、jvm内存模型 2、垃圾回收算法、机制详解 3、JVM基本监控工具jstat、jstack、jconsole等的使用 4、JVM基本调优案例讲解
Java 2语言命令详解 Java 作为一门广泛使用的编程语言,其命令行工具在开发、编译、运行和管理Java程序中起着至关重要的作用。本文将深入探讨Java 2平台(J2SE)下的主要命令及其用法,帮助开发者更好地理解和掌握...
Java2语言命令详解 在Java开发中,理解并掌握各种命令行工具是至关重要的,特别是对于初学者和专业开发者来说。Java2语言命令主要指Java Development Kit (JDK) 提供的一系列命令行工具,它们在Java程序的编译、...
11. **jstat**: 监控JVM统计信息,如垃圾收集、内存使用等。 12. **jstack**: 显示Java线程堆栈跟踪,用于排查死锁和阻塞问题。 13. **java Mission Control (JMC)**: 是Oracle提供的一款高级性能分析工具,包含了...
为了监控和调试JVM的运行状态,Oracle提供了多个命令行工具,包括jps、jstack、jstat、jmap和jcmd。这些工具可以帮助开发者了解和解决性能问题,优化应用程序。 一、jps (Java Process Status) jps是查看当前系统中...
#### 二、jstat工具用法 **jstat**是Java虚拟机(JVM)自带的一个命令行工具,用于监控和管理HotSpot JVM。它可以通过不同的参数获取JVM的各种性能指标。 ##### 1. jstat命令详解 - `jstat -gcutil 进程ID 间隔时间` ...
Java 2 应用命令详解 在 Java 开发和运行环境中,掌握各种命令行工具是至关重要的。Java 2 应用命令主要指的是用于管理、编译、运行和调试 Java 程序的一系列命令。这些命令使得开发者能够在不同的操作系统上高效地...
**JDK命令详解** 在Java开发中,JDK(Java Development Kit)是不可或缺的一部分,它提供了编译、运行和调试Java程序所需的所有工具。本文将深入解析JDK中的一些核心命令,帮助开发者更好地理解和利用这些工具。 #...
### JAVA JVM性能调优监控工具详解 在Java开发过程中,特别是在企业级应用中,经常会遇到各种性能瓶颈问题,如内存溢出(`OutOfMemoryError`)、内存泄露、线程死锁、锁争用等问题。这些问题如果不能及时有效地解决...