jps、jstat是jvm监控工具。除Windows 98和Windows ME外,所有平台都支持这些工具。
jps - jvm进程状态工具
jps
命令的功能是列出目标系统上已检测到的HotSpot Java虚拟机。
C:\Users\qzvao>jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
通过jps -help
可知,jps共有5个可选命令行选项。
-q 列出仅包含进程id的jvm列表
C:\Users\qzvao>jps -q
6880
16468
18908
-m 列出包含jvm进程id,main方法所在类名,main方法参数的jvm列表
C:\Users\qzvao>jps -m
16468 Launcher D:/ide/idea/lib/jgoodies-forms.jar;D:/ide/idea/lib/asm-all.jar;D:/ide/idea/lib/snappy-in-java-0.5.1.jar;D:/ide/idea/lib/jps-builders-6.jar;D:/ide/idea/lib/jna-platform.jar;D:/ide/idea/lib/maven-aether-provider-3.3.9-all.jar;D:/ide/idea/lib/resources_en.jar;D:/ide/idea/lib/forms_rt.jar;D:/ide/idea/lib/guava-21.0.jar;D:/ide/idea/lib/jna.jar;D:/ide/idea/lib/httpcore-4.4.5.jar;D:/ide/idea/lib/oromatcher.jar;D:/ide/idea/lib/javac2.jar;D:/ide/idea/lib/httpclient-4.5.2.jar;D:/ide/idea/lib/util.jar;D:/ide/idea/lib/log4j.jar;D:/ide/idea/lib/trove4j.jar;D:/ide/idea/lib/openapi.jar;D:/ide/idea/lib/annotations.jar;D:/ide/idea/lib/jdom.jar;D:/ide/idea/lib/jps-model.jar;D:/ide/idea/lib/protobuf-java-2.5.0.jar;D:/ide/idea/lib/jps-builders.jar;D:/ide/idea/lib/commons-codec-1.9.jar;D:/ide/idea/lib/aether-dependency-resolver.jar;D:/ide/idea/lib/commons-logging-1.2.jar;D:/ide/idea/lib/slf4j-api-1.7.10.jar;D:/ide/idea/lib/aether-1.1.0-all.jar;D:/ide/idea/lib/idea_rt.jar;D:/ide/idea/lib/netty-al
16708 Jps -m
-v 列出包含jvm进程id,main方法所在类名,jvm参数的jvm列表
C:\Users\qzvao>jps -v
16468 Launcher -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=D:/ideaProjects/bonc/carbon-apimgt -Dpreload.config.path=C:/Users/qzvao/.IntelliJIdea2017.3/config/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Djava.net.preferIPv4Stack=true -Dio.netty.initialSeedUniquifier=-5202155218272748285 -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2017.3 -Didea.home.path=D:\ide\idea -Didea.config.path=C:\Users\qzvao\.IntelliJIdea2017.3\config -Didea.plugins.path=C:\Users\qzvao\.IntelliJIdea2017.3\config\plugins -Djps.log.dir=C:/Users/qzvao/.IntelliJIdea2017.3/system/log/build-log -Djps.fallback.jdk.home=D:/ide/idea/jre64 -Djps.fallback.jdk.version=1.8.0_152-release -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/qzvao/.IntelliJIdea2017.3/system/compile-server/carbon-apimgt_789ae554/_temp_ -Djps.backward.ref.index.builder=true
11740 Jps -Denv.class.path=.;D:\sdk\jdk\jdk1.8.0_162\lib -Dapplication.home=D:\sdk\jdk\jdk1.8.0_162 -Xms8m
18908 -Xms2048m -Xmx2048m -XX:ReservedCodeCacheSize=1024m -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Dfile.encoding=UTF-8 -Djb.vmOptionsFile=D:\ide\idea\bin\idea64.exe.vmoptions -Xbootclasspath/a:D:\ide\idea\lib\boot.jar -Didea.jre.check=true -Dide.native.launcher=true -Didea.paths.selector=IntelliJIdea2017.3 -XX:ErrorFile=C:\Users\qzvao\java_error_in_idea_%p.log -XX:HeapDumpPath=C:\Users\qzvao\java_error_in_idea.hprof
-V 列出包含jvm进程id,main方法所在类名的jvm列表
C:\Users\qzvao>jps -V
16468 Launcher
7700 Jps
-l 列出包含jvm进程id,main方法所在类全限定类名的jvm列表
C:\Users\qzvao>jps -l
19248 sun.tools.jps.Jps
16468 org.jetbrains.jps.cmdline.Launcher
jstat - JVM统计监控工具
jstat命令列出已检测到的Java HotSpot VM的性能统计信息
命令格式
C:\Users\qzvao>jstat -class -h3 -t 16468 1000 8
Timestamp Loaded Bytes Unloaded Bytes Time
115285.7 3157 5887.3 0 0.0 2.51
115286.7 3157 5887.3 0 0.0 2.51
115287.7 3157 5887.3 0 0.0 2.51
Timestamp Loaded Bytes Unloaded Bytes Time
115288.7 3157 5887.3 0 0.0 2.51
115289.7 3157 5887.3 0 0.0 2.51
115290.7 3157 5887.3 0 0.0 2.51
Timestamp Loaded Bytes Unloaded Bytes Time
115291.7 3157 5887.3 0 0.0 2.51
115292.7 3157 5887.3 0 0.0 2.51
jstat -class -h3 -t 16468 1000 8
这条命令的意思是查看类加载器统计信息
- -class监控类加载器统计信息,当然我们还可以监控垃圾收集堆统计信息(-gc)等信息。
- h3选项每三条信息加一个列标题(可选)
- -t选项是在在首列加一列距离jvm启动的时间戳(可选)
- 16468是jvm进程id(必须)
- 1000是每隔1000毫秒打印一条数据(可选,默认打印一条)
- 8是打印8条数据(可选,如果指定了间隔时间,将持续打印)
-class监控类加载器统计信息标题解释
Timestamp 距离jvm启动的时间戳
Loaded:已加载的类数。
Bytes:加载的kB数。
Unloaded:卸载的类数。
Bytes:已卸载的Kbytes数。
Time:执行类加载和卸载操作所花费的时间。
其他监控统计信息
-compiler Java HotSpot VM即时编译器统计信息。
-gc 垃圾收集堆统计信息。
-gcutil 垃圾收集统计摘要。
-gccause 此选项显示与-gcutil选项相同的垃圾回收统计信息摘要,但包括上次垃圾回收事件的原因以及(如果适用)当前垃圾回收事件的原因。除了为-gcutil列出的列之外,此选项还添加以下列。
- LGCC 上次垃圾收集的原因
- GCC 当前垃圾收集的原因
-gcnew 新生代垃圾回收统计
-gcnewcapacity 新生代内存空间大小统计
-gcold 老年代和元空间(metaspace)垃圾回收统计
-gcoldcapacity 老生代内存空间大小统计
-gcmetacapacity 元空间(metaspace)内存空间大小统计
-printcompilation Java HotSpot VM编译方法统计
-gccapacity 内存池生成和空间容量。
各个统计信息标题请参考oracle官方文档