这里将介绍几款sun hotspot jvm 自带的监控工具:
请确保java_home/bin配置到path环境变量下,因为这些工具都在jdk的bin目录下
jps(JVM Process Status Tool):JVM机进程状况工具
用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。与unix上的ps类似,用来显示本地有权限的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。使用jps时,不需要传递进程号做为参数。
Jps也可以显示远程系统上的JAVA进程,这需要远程服务上开启了jstat服务,以及RMI注及服务,不过常用都是对本对的JAVA进程的查看。
命令格式:jps [ options ] [ hostid ]
常用参数说明:
-m 输出传递给main方法的参数,如果是内嵌的JVM则输出为null。
-l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。
-v 输出传给JVM的参数。
例如:
- C:\Users\Administrator>jps -lmv
- 1796 -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -XX:MaxPermSize=256m
- 7340 sun.tools.jps.Jps -lmv -Denv.class.path=.;D:\DevTools\VM\jdk1.6.0_31\\lib\dt.jar;D:\DevTools\VM\jdk1.6.0_31\\lib\tools.jar; -Dapplication.home=D:\DevTools\VM\jdk1.6.0_31 -Xms8m
其中pid为1796的是我的eclipse进程,pid为7340的是jps命令本身的进程
jinfo(Configuration Info for Java):JVM配置信息工具
可以输出并修改运行时的java 进程的opts。用处比较简单,用于输出JAVA系统参数及命令行参数
命令格式:jinfo [ options ] [ pid ]
常用参数说明:
-flag 输出,修改,JVM命令行参数
例如:
- C:\Users\Administrator>jinfo 1796
将会打印出很多jvm运行时参数信息,由于比较长这里不再打印出来,可以自己试试,内容一目了然
Jstack(Stack Trace for Java):JVM堆栈跟踪工具
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64“
命令格式:jstack [ option ] pid
常用参数说明:
-F 当’jstack [-l] pid’没有相应的时候强制打印栈信息
-l 长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.
-m 打印java和native c/c++框架的所有栈信息.
-h | -help打印帮助信息
例如:
- C:\Users\Administrator>jstack 1796
- 2013-05-22 11:42:38
- Full thread dump Java HotSpot(TM) Client VM (20.6-b01 mixed mode):
-
- "Worker-30" prio=6 tid=0x06514c00 nid=0x1018 in Object.wait() [0x056af000]
- java.lang.Thread.State: TIMED_WAITING (on object monitor)
- at java.lang.Object.wait(Native Method)
- at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- - locked <0x1ad84a90> (a org.eclipse.core.internal.jobs.WorkerPool)
- at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
- at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)
- ......
- ......
- ......
- ......
jstat(JVM statistics Monitoriing Tool):JVM统计信息监视工具
对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控
命令格式:jstat [ option pid [interval [ s | ms ] [count] ] ]
常用参数说明:
-gcutil 输出已使用空间占总空间的百分比
-gccapacity 输出堆中各个区域使用到的最大和最小空间
例如:每隔1秒监控jvm内存一次,共监控5次
- C:\Users\Administrator>jstat -gccapacity 1796 1s 5
- NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
- 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
- 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
- 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
- 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
- 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 97
- C:\Users\Administrator>jstat -gcutil 1796 1s 5
- S0 S1 E O P YGC YGCT FGC FGCT GCT
- 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
- 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
- 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
- 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
- 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
一些术语的中文解释:
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 : 最大持有次数限制
jmap( Memory Map for Java):JVM内存映像工具
打印出某个java进程(使用pid)内存内的所有‘对象’的情况(如:产生那些对象,及其数量)
命令格式:jmap [ option ] pid
常用参数说明:
-dump:[live,]format=b,file=<filename> 使用二进制形式输出jvm的heap内容到文件中, live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
-F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.
例如:以二进制形式输入当前堆内存映像到文件data.hprof中
- jmap -dump:live,format=b,file=data.hprof 1796
生成的文件可以使用jhat工具进行分析,在OOM(内存溢出)时,分析大对象,非常有用
通过使用如下参数启动JVM,也可以获取到dump文件:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./java_pid<pid>.hprof
在jvm发生内存溢出时生成内存映像文件
jhat(JVM Heap Analysis Tool):JVM堆转储快照分析工具
用于对JAVA heap进行离线分析的工具,他可以对不同虚拟机中导出的heap信息文件进行分析,如LINUX上导出的文件可以拿到WINDOWS上进行分析,可以查找诸如内存方面的问题。
命令格式:jhat dumpfile(jmap生成的文件)
例如:分析jmap导出的内存映像
执行成功后,访问http://localhost:7000即可查看内存信息,
MAT(Memory Analyzer Tool):一个基于Eclipse的内存分析工具
官网: http://www.eclipse.org/mat/
update:http://download.eclipse.org/mat/1.2/update-site/
这是eclipse的一个插件,安装后可以打开xxx.hprof文件,进行分析,比jhat更方便使用,有些时候由于线上xxx.hprof文件过大,直接使用jhat进行初步分析了,可以的话拷贝到本地分析效果更佳。
图形化监控工具:
在JDK安装目录bin下面有两个可视化监控工具
1. JConsole(Java Monitoring and Management Console) 基于JMX的可视化管理工具。
2. VisualVM(All-in-one Java Troubleshooting Tool)随JDK发布的最强大的运行监视和故障处理程序。
推荐使用VisualVM,他有很多插件,可以更方便的监控运行时JVM
相关推荐
jvm性能调优工具命令大全.zip jps jstat jmap jhat jstack jinfo jps JVM Process Status Tool GChisto jvisualvm ...
本文将深入探讨标题为"虚拟机监控工具详请.rar"的压缩包中所包含的知识点,主要关注Java虚拟机(JVM)的监控工具。这些工具对于理解应用程序的性能、内存使用以及线程状态至关重要。以下是关于这些工具的详细介绍: ...
此外,作者还提供了丰富的虚拟机性能监控和故障处理工具的使用指南,包括基础工具如jps、jstat、jinfo、jmap、jhat、jstack,以及可视化工具JHSDB、JConsole、VisualVM和Java Mission Control。这些工具帮助开发者...
此外,书中还涵盖了虚拟机性能监控和故障处理工具,如jps、jstat、jinfo、jmap、jhat、jstack等,以及可视化工具如JConsole、VisualVM和Java Mission Control等,帮助开发者进行问题诊断和性能调优。 最后,书中的...
JDK自带了一系列强大的诊断工具,如jps(Java进程查看器)、jstat(统计信息工具)、jinfo(配置信息工具)、jmap(内存映射工具)、jhat(堆转储分析工具)和jstack(线程堆栈跟踪工具)。熟练掌握这些工具的使用,...
提供多种JVM监控工具的使用示例,如jps、jstat、jmap、jhat、jstack、jinfo和jcmd,帮助开发者实时监控JVM的运行状态。 3. 内存管理与垃圾收集 演示如何通过调整JVM参数(如XX:PretenureSizeThreshold)来影响...
第4章涵盖了JDK提供的各种诊断工具,如jps、jstat、jinfo、jmap、jhat、jstack和HSDIS,它们是分析和调试JVM问题的得力助手。4.3章节介绍了可视化工具JConsole和VisualVM,帮助开发者直观地监控和分析Java应用程序的...
在Java中,有一些内置的工具可以用来监控和分析性能,包括内存使用、垃圾回收等方面。 首先,`jps`命令类似于Linux的`ps`命令,用于列出本地正在运行的Java进程ID。`jstat`工具则可以提供虚拟机(VM)的各种统计...
为了监控和调试JVM的运行状态,Oracle提供了多个命令行工具,包括jps、jstack、jstat、jmap和jcmd。这些工具可以帮助开发者了解和解决性能问题,优化应用程序。 一、jps (Java Process Status) jps是查看当前系统中...
第56节可视化虚拟机工具-Jconsole内存监控00:07:09分钟 | 第57节可视化虚拟机工具-Jconsole线程监控00:12:18分钟 | 第58节死锁原理以及可视化虚拟机工具-Jconsole线程死锁监控00:10:38分钟 | 第59节VisualVM使用...
例如,使用 `jmap -dump:live,format=b,file=<filename> <pid>` 可以生成堆的快照文件,方便后续使用内存分析工具(如MAT、JVisualVM等)进行分析。 ### JSTACK JSTACK用于生成当前JVM中所有线程的堆栈跟踪,这对于...
4.2.4 jmap:Java内存映像工具 4.2.5 jhat:虚拟机堆转储快照分析工具 4.2.6 jstack:Java堆栈跟踪工具 4.2.7 HSDIS:JIT生成代码反汇编 4.3 JDK的可视化工具 4.3.1 JConsole:Java监视与管理控制台 4.3.2 ...
基础故障处理工具包括jps、jstat、jinfo、jmap、jhat和jstack等。这些工具能够帮助开发者监控虚拟机的状态、统计信息、内存映像和堆转储等。可视化故障处理工具如JHSDB、JConsole、VisualVM和Java Mission Control...
Java虚拟机(JVM)是Java程序运行的基础,它负责解释和执行字节码,管理内存,以及执行垃圾回收等任务。在开发和维护Java应用过程中,了解和使用JVM的故障处理工具对于定位和解决问题至关重要。这些工具可以帮助...
jconsole是一个图形化界面工具,可以实时监控Java应用的性能和资源使用情况,包括JVM指标、线程、类装载、内存、垃圾收集等。 8. **jvisualvm (Java VisualVM)**: jvisualvm是另一个功能强大的Java应用性能分析...
1. **JVM内置工具**:Java虚拟机(JVM)提供了多种内置的诊断工具,如`jps`(Java进程状态工具)、`jstat`(Java统计监视工具)、`jinfo`(配置信息工具)、`jmap`(映射工具)、`jhat`(堆分析工具)和`jstack`...
除了上述工具,还有其他如`jmap`(用于生成堆转储文件和查看内存映射)、`jhat`(分析堆转储文件)和`jmc`(Java Mission Control,一个更全面的性能分析工具集)等,它们提供了丰富的功能来帮助开发者深入理解JVM的...
7. **诊断工具** - `jstack`、`jmap`、`jinfo`:这些命令行工具用于调试和诊断Java应用程序,例如,`jstack`用于打印线程堆栈跟踪,`jmap`用于获取堆内存映射,`jinfo`则可以显示和修改Java进程的配置信息。...