jps、jstat是jvm監(jiān)控工具。除Windows 98和Windows ME外,所有平臺都支持這些工具。
jps - jvm進程狀態(tài)工具
jps命令的功能是列出目標系統(tǒng)上已檢測到的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方法參數(shù)的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參數(shù)的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統(tǒng)計監(jiān)控工具
jstat命令列出已檢測到的Java HotSpot VM的性能統(tǒng)計信息
命令格式
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這條命令的意思是查看類加載器統(tǒng)計信息
- -class監(jiān)控類加載器統(tǒng)計信息,當然我們還可以監(jiān)控垃圾收集堆統(tǒng)計信息(-gc)等信息。
- h3選項每三條信息加一個列標題(可選)
- -t選項是在在首列加一列距離jvm啟動的時間戳(可選)
- 16468是jvm進程id(必須)
- 1000是每隔1000毫秒打印一條數(shù)據(jù)(可選,默認打印一條)
- 8是打印8條數(shù)據(jù)(可選,如果指定了間隔時間,將持續(xù)打印)
-class監(jiān)控類加載器統(tǒng)計信息標題解釋
Timestamp 距離jvm啟動的時間戳
Loaded:已加載的類數(shù)。
Bytes:加載的kB數(shù)。
Unloaded:卸載的類數(shù)。
Bytes:已卸載的Kbytes數(shù)。
Time:執(zhí)行類加載和卸載操作所花費的時間。
其他監(jiān)控統(tǒng)計信息
-compiler Java HotSpot VM即時編譯器統(tǒng)計信息。
-gc 垃圾收集堆統(tǒng)計信息。
-gcutil 垃圾收集統(tǒng)計摘要。
-gccause 此選項顯示與-gcutil選項相同的垃圾回收統(tǒng)計信息摘要,但包括上次垃圾回收事件的原因以及(如果適用)當前垃圾回收事件的原因。除了為-gcutil列出的列之外,此選項還添加以下列。
- LGCC 上次垃圾收集的原因
- GCC 當前垃圾收集的原因
-gcnew 新生代垃圾回收統(tǒng)計
-gcnewcapacity 新生代內(nèi)存空間大小統(tǒng)計
-gcold 老年代和元空間(metaspace)垃圾回收統(tǒng)計
-gcoldcapacity 老生代內(nèi)存空間大小統(tǒng)計
-gcmetacapacity 元空間(metaspace)內(nèi)存空間大小統(tǒng)計
-printcompilation Java HotSpot VM編譯方法統(tǒng)計
-gccapacity 內(nèi)存池生成和空間容量。
各個統(tǒng)計信息標題請參考oracle官方文檔