JVM 与 jstat
准备知识
Sun的 Java HotSpot(热区) 虚拟机将堆划分成三块区域同时用了三种垃圾收集技术。将堆进行拆分的目的是允许为新建立的对象和旧对象使用不同的算法。 这种技术是因为大多数的Java对象是生命周期较短的对象。堆的三个块区域为:
-
permanent space持久空间: 用于类和方法对象的存储
-
old space 旧对象空间:用于建立一段时间的对象
-
eden space 新对象空间:用于新建立的对象
新对象空间被进一步划分成3个子区域:
1,Eden:所有的新建立的对象存储处。
2,Survivor Space 0 或 1:在新对象成为旧对象之前的对象存储处。
在服务启动时没有指定启动参数-verbose:gc时 ,可通过jstat 对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控等等
使用jstat
执行jstat-gc 得到GC回收过程,要运行多次,通过比较来查看是否有内存泄露的可能.
Jstat –gc pid 间隔时间(默认是毫秒) 次数 (查看jstat --help)
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
320.0 320.0 128.0 0.0 22400.0 869.1 502144.0 491115.6 56064.0 33139.4 93108 1209.757 8 10.132 1219.889
320.0 320.0 128.0 0.0 22400.0 9067.6 502144.0 491115.6 56064.0 33139.4 93108 1209.757 8 10.132 1219.889
320.0 320.0 128.0 0.0 22400.0 18480.5 502144.0 491115.6 56064.0 33139.4 93108 1209.757 8 10.132 1219.889
320.0 320.0 128.0 0.0 22400.0 21662.6 502144.0 491115.6 56064.0 33139.4 93108 1209.757 8 10.132 1219.889
320.0 320.0 0.0 96.0 22400.0 4712.3 502144.0 491143.6 56064.0 33139.4 93109 1209.771 8 10.132 1219.903
320.0 320.0 0.0 96.0 22400.0 13482.3 502144.0 491143.6 56064.0 33139.4 93109 1209.771 8 10.132 1219.903
320.0 320.0 0.0 96.0 22400.0 21006.6 502144.0 491143.6 56064.0 33139.4 93109 1209.771 8 10.132 1219.903
320.0 320.0 136.0 0.0 22400.0 3065.5 502144.0 491167.6 56064.0 33139.4 93110 1209.786 8 10.132 1219.918
320.0 320.0 136.0 0.0 22400.0 10034.8 502144.0 491167.6 56064.0 33139.4 93110 1209.786 8 10.132 1219.918
320.0 320.0 136.0 0.0 22400.0 15687.6 502144.0 491167.6 56064.0 33139.4 93110 1209.786 8 10.132 1219.918
320.0 320.0 136.0 0.0 22400.0 22046.2 502144.0 491167.6 56064.0 33139.4 93110 1209.786 8 10.132 1219.918
320.0 320.0 0.0 144.0 22400.0 6664.2 502144.0 491191.6 56064.0 33139.4 93111 1209.799 8 10.132 1219.930
320.0 320.0 0.0 144.0 22400.0 12998.2 502144.0 491191.6 56064.0 33139.4 93111 1209.799 8 10.132 1219.930
320.0 320.0 0.0 144.0 22400.0 21305.5 502144.0 491191.6 56064.0 33139.4 93111 1209.799 8 10.132 1219.930
320.0 320.0 112.0 0.0 22400.0 9634.2 502144.0 491247.6 56064.0 33139.4 93112 1209.813 8 10.132 1219.945
320.0 320.0 112.0 0.0 22400.0 17039.8 502144.0 491247.6 56064.0 33139.4 93112 1209.813 8 10.132 1219.945
320.0 320.0 0.0 128.0 22400.0 7411.9 502144.0 491267.6 56064.0 33139.4 93113 1209.829 8 10.132 1219.960
320.0 320.0 0.0 128.0 22400.0 16995.1 502144.0 491267.6 56064.0 33139.4 93113 1209.829 8 10.132 1219.960
320.0 320.0 96.0 0.0 22400.0 4477.4 502144.0 491291.6 56064.0 33139.4 93114 1209.845 8 10.132 1219.977
320.0 320.0 96.0 0.0 22400.0 8164.9 502144.0 491291.6 56064.0 33139.4 93114 1209.845 8 10.132 1219.977
-gc Option
Garbage-collected heap statistics
|
Column
|
Description
|
S0C
|
Current survivor space 0 capacity (KB).
|
S1C
|
Current survivor space 1 capacity (KB).
|
S0U
|
Survivor space 0 utilization (KB).
|
S1U
|
Survivor space 1 utilization (KB).
|
EC
|
Current eden space capacity (KB).
|
EU
|
Eden space utilization (KB).
|
OC
|
Current old space capacity (KB).
|
OU
|
Old space utilization (KB).
|
PC
|
Current permanent space capacity (KB).
|
PU
|
Permanent space utilization (KB).
|
YGC
|
Number of young generation GC Events.
|
YGCT
|
Young generation garbage collection time.
|
FGC
|
Number of full GC events.
|
FGCT
|
Full garbage collection time.
|
GCT
|
Total garbage collection time.
|
XxxC:xxx容量
xxxU:xxx使用
u02 log/Developer> jstat -gcutil 26800 20000 20
S0 S1 E O P YGC YGCT FGC FGCT GCT
91.67 0.00 17.16 42.18 62.26 95012 1232.768 9 11.342 1244.109
0.00 75.00 37.25 42.21 62.26 95017 1232.838 9 11.342 1244.180
0.00 75.00 92.21 42.22 62.26 95021 1232.881 9 11.342 1244.223
87.52 0.00 35.94 42.25 62.26 95026 1232.943 9 11.342 1244.285
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:用于垃圾回收的总时间(单位秒)
-gcutil Option
Summary of Garbage Collection Statistics
|
Column
|
Description
|
S0
|
Survivor space 0 utilization as a percentage of the space's current capacity.
|
S1
|
Survivor space 1 utilization as a percentage of the space's current capacity.
|
E
|
Eden space utilization as a percentage of the space's current capacity.
|
O
|
Old space utilization as a percentage of the space's current capacity.
|
P
|
Permanent space utilization as a percentage of the space's current capacity.
|
YGC
|
Number of young generation GC events.
|
YGCT
|
Young generation garbage collection time.
|
FGC
|
Number of full GC events.
|
FGCT
|
Full garbage collection time.
|
GCT
|
Total garbage collection time.
|
通过指定虚拟机启动参数-verbose:gc,使得GC把回收垃圾的信息打印到控制台
Java –verbose:gc
[Full GC 168K->97K(1984K), 0.0253873 secs]
箭头之前:168K是代表GC回收前对象占用的内存空间
箭头之后:97代表GC回收后对旬占用内存空间
说明有168K-97K=71K的对象容量被回收
括号里的1984代表堆heap内存总容量, 收集所需要的时间是0.0253873秒
参考文献
jstat - Java Virtual Machine Statistics Monitoring Tool
http://java.sun.com/javase/6/docs/technotes/tools/share/jstat.html
分享到:
相关推荐
### JVM内存管理与jstat工具详解 #### 一、引言 在现代软件开发中,Java虚拟机(JVM)是构建高性能应用的基础之一。为了确保应用能够在各种资源限制下稳定运行,开发者需要掌握如何有效地管理和监控JVM的内存使用...
jmap、jstack、jstat组合使用定位jvm问题
jstat是一个强大的监控工具,可以为开发者和系统管理员提供关于JVM性能的深入见解,尤其是与垃圾收集和类加载相关的性能指标。通过监控这些指标,用户可以及时发现和解决问题,优化Java应用程序的性能。尽管工具本身...
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解 本文将对一些常用的 JVM 性能调优监控工具进行介绍,包括 jps、jstack、jmap、jhat、jstat 等工具的使用详解。这些工具对于 Java 程序员来说是必备的,...
jstat(JVM Statistics Monitoring Tool)是Oracle JDK提供的一款强大的命令行工具,用于实时监控Java虚拟机的各种运行状态,包括内存管理、类加载、垃圾收集以及JIT编译等关键指标。了解并熟练运用jstat,能帮助...
JVM 内存溢出问题解析 JVM 内存溢出是指程序运行所需的内存大于虚拟机能提供的最大内存的情况。这种情况可能是由于数据量过大、死循环、静态变量和静态方法过多、递归、无法确定是否被引用的对象等原因引起的。同时...
此外,JDK自带的JMX(Java Management Extensions)和JVM命令行工具(如jstat、jmap、jhat)也是进行性能诊断的重要手段。 在优化方面,JVM配置参数起着决定性作用。例如,“-Xms”和“-Xmx”用于设置堆内存的初始...
jstat命令是用于监控Java虚拟机(JVM)运行时统计信息的命令行工具,它能够显示Java虚拟机中的堆状况、类加载、垃圾回收等多方面的数据。这个命令通常用于排查JVM性能问题或者进行监控分析。 jstat命令的基本用法...
- **Jstat**:显示JVM的统计信息,如堆内存使用情况、垃圾收集器信息等。 - **Jinfo**:查询或更新JVM配置信息。 - **JConsole**:图形化的监视和管理工具,能够远程监控JVM。 - **VisualVM**:集成了多个功能的故障...
配置jconsole与Tomcat的连接通常涉及修改Tomcat的`catalina.sh`或`catalina.bat`启动脚本,添加JVM参数`-Dcom.sun.management.jmxremote`等。 在提供的文件"jconsole+tomcat配置说明(基于jdk5_0) - bluestar - ...
`jstat`是Java虚拟机内置的一个命令行工具,用于实时监控JVM的各种运行状态,包括垃圾回收的信息。要查看哪个进程频繁进行GC,可以使用以下命令: ``` jstat -gc <进程ID> <间隔时间> <次数> ``` 这里的`<进程ID>`...
10. **JVM诊断工具**:JDK提供了丰富的命令行工具,如jps(Java进程查看)、jstat(统计JVM各种数据)、jmap(内存映射工具)、jhat(堆转储分析)、jconsole(GUI监控工具)等,用于监控和诊断JVM的运行状态。...
jstat是一个命令行工具,利用了JVM内建的指令对Java应用程序的资源和性能进行实时的命令行监控,包括对Heap size和垃圾回收状况的监控等等。 jps jps是一个命令行工具,用于查看JVM中的所有进程状态,包括进程ID、...
### 深入JVM内核:原理、诊断与优化 #### 一、JVM基础知识 **1.1 JVM概念** Java虚拟机(Java Virtual Machine,简称JVM)是一种用于执行Java字节码的虚拟机。它为Java程序提供了一个运行环境,能够独立于硬件平台...
5. **性能调优**:JVM提供了丰富的命令行工具,如jps、jstat、jmap、jhat、jconsole等,用于监控和分析JVM状态。通过调整JVM参数(如-Xms, -Xmx, -XX:NewRatio等),可以优化内存分配、GC行为和线程设置,达到性能...
本文将深入探讨六种关键的JVM监控工具——`jstack`, `jconsole`, `jinfo`, `jmap`, `jdb`, `jstat`——它们各自的功能、应用场景及如何帮助开发者和运维人员诊断并解决JVM中的复杂问题。 #### 1. jstack —— Java ...
本文将深入探讨 VisualVM 及其集成的一系列命令行工具,包括 jps、jstat、jmap、jinfo、jstack 和 JConsole,帮助读者掌握 JVM 内存监控的核心技巧。 #### VisualVM:JVM 监控的全能工具 VisualVM 是一款功能强大...
例如,首先使用`jstat`监控JVM的实时状态,发现可能的性能问题后,用`jmap`生成heap dump,最后借助MAT进行深入的内存分析。通过这种方式,开发者可以找出内存泄漏、优化内存分配、改进垃圾收集效率,进而提升Java...
"JVM.zip"可能是一个包含了与JVM相关的工具或示例代码的压缩包,特别是用于获取运行中的JVM系统的参数。这通常是开发人员为了监控和优化Java应用程序性能的重要手段。 在Java中,`SystemInfo`类的出现很可能是为了...