JVM調試指令
- JVM調試指令
-
- jps: 虛拟機程序狀況工具
-
- 預設查詢
- 輸出本地虛拟機唯一ID
- 輸出主類函數的參數
- 輸出主類的全名
- 輸出JVM參數
- jstat: 虛拟機統計資訊監視工具
-
- 監視堆狀态
- 監視消耗時間
- 各區最值
- 各區百分比
- 上次垃圾回收的原因
- 監視新生代
- 監視新生代最值
- 監視老年代
- 監視老年代最值
- 監視永生代最值
- 輸出即時編譯器資訊
- 輸出被即時編譯的方法
- jinfo: Java配置資訊工具
-
- 輸出JVM的參數
- 輸出Java系統屬性
- jmap: Java記憶體映像工具
- jhat: 虛拟機堆轉儲快照分析工具
- jstack: Java堆棧跟蹤工具
jps: 虛拟機程序狀況工具
jps( JVM Process Status Tool) : 輸出正在運作的虛拟機程序, 并顯示虛拟機執行主類( Main Class, main()函數所在的類) 名稱 和 這些程序的本地虛拟機唯一ID( LVMID, Local Virtual Machine Identifier)
預設查詢
jps
C:\Users\cpucode>jps
14104 EdenSurvivorTest
12716 Launcher
15116 Jps
8668
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxgDN5UDN1YTM4ETMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
輸出本地虛拟機唯一ID
C:\Users\cpucode>jps -q
14104
328
12716
8668
輸出主類函數的參數
C:\Users\cpucode>jps -m
17524 Jps -m
14104 EdenSurvivorTest
12716 Launcher D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/netty-buffer-4.1.47.Final.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/log4j.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/maven-builder-support-3.6.1.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/jps-model.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/maven-artifact-3.6.1.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/gson-2.8.6.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/nanoxml-2.2.3.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/plexus-component-annotations-1.7.1.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/util.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/commons-lang3-3.9.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/plexus-utils-3.2.0.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/maven-repository-metadata-3.6.1.jar;
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/lib/maven-resolver
8668
輸出主類的全名
C:\Users\cpucode>jps -l
11392 jdk.jcmd/sun.tools.jps.Jps
14104 com.cpucode.java.heap.EdenSurvivorTest
12716 org.jetbrains.jps.cmdline.Launcher
8668
輸出JVM參數
C:\Users\cpucode>jps -v
14104 EdenSurvivorTest
-javaagent:
D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3\lib\idea_rt.jar=54054:
D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3\bin
-Dfile.encoding=UTF-8
12716 Launcher -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs=""
-Djdt.compiler.useSingleThread=true
-Dpreload.project.path=D:/Date/github/java
-Dpreload.config.path=
C:/Users/cpucode/AppData/Roaming/JetBrains/IntelliJIdea2020.2/options
-Dcompile.parallel=false
-Drebuild.on.dependency.change=true
-Dio.netty.initialSeedUniquifier=5740358244341838324 -Dfile.encoding=GBK
-Duser.language=
zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2020.2
-Didea.home.path=
D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3
-Didea.config.path=
C:\Users\cpucode\AppData\Roaming\JetBrains\IntelliJIdea2020.2
-Didea.plugins.path=
C:\Users\cpucode\AppData\Roaming\JetBrains\IntelliJIdea2020.2\plugins
-Djps.log.dir=
C:/Users/cpucode/AppData/Local/JetBrains/IntelliJIdea2020.2/log/build-log
-Djps.fallback.jdk.home=
D:/Program Files/JetBrains/IntelliJ IDEA 2020.2.3/jbr
-Djps.fallback.jdk.version=11.0.8 -Dio.netty.noUnsafe=true
-Djava.io.tmpdir=
C:/Users/cpucode/AppData/Local/JetBrains/IntelliJIdea2020.2/compile
-server/java_e852b51c/_temp_
-Djps.b
4956 Jps -Dapplication.home=D:\Program Files\java\jdk-14.0.2
-Xms8m
-Djdk.module.main=jdk.jcmd
8668 exit -Xms128m -Xmx1966m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50 -ea
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
-javaagent:C:\Users\Public\.jetbrains\jetbrains-agent-v3.2.0.0f1f.69e=6e68f9eb,
HbVMaxqQrTt4UvDUk8fhyFT7uRdv48bqJsQMwVFp53YH9PZC9l+ZxAgnA60cLwwhURw
/e4DcZZtle4tQzur4yWRk35qghES4JLFlmKty
/UNiYh6RZyXeCNPTCvIqxT9HR2YKqQT93be6AfLTcbJwPSLO201g+HbMbg6+aK1MUJI
-Djb.vmOptionsFile=
C:\Users\cpucode\AppData\Roaming\JetBrains\IntelliJIdea2020.2\idea64.exe.vmoptions
-Djava.library.path=
D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3\jbr\\bin;
D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3\jbr\\bin\server
-Didea.jre.check=true
-Dide.native.launcher=true
-Didea.vendor.name=JetBrains
-Didea.paths.selector=IntelliJIdea2020.2
-XX:ErrorFile=C:\Users\c
jstat: 虛拟機統計資訊監視工具
jstat( JVM Statistics Monitoring Tool) : 監視虛拟機各種運作狀态資訊。 顯示本地或者遠端虛拟機程序中的類加載、 記憶體、 垃圾收集、 即時編譯等運作時資料
監視堆狀态
C:\Users\cpucode>jps
16624 Jps
19560 HeapInstanceTest
20412 Launcher
8668
C:\Users\cpucode>jstat -gc 19560
S0C S1C S0U S1U EC EU OC OU MC MU
226304.0 269312.0 197949.6 0.0 241152.0 85152.9 938496.0 550343.3 4864.0 3837.2
CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
512.0 416.2 6 0.183 3 0.124 - - 0.308
監視消耗時間
C:\Users\cpucode>jps
20160 Launcher
19672 HeapInstanceTest
15132 Jps
8668
C:\Users\cpucode>jstat -class 19672
Loaded Bytes Unloaded Bytes Time
616 1273.5 0 0.0 0.13
各區最值
C:\Users\cpucode>jstat -gccapacity 19672
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC
83968.0 1342464.0 1342464.0 447488.0 447488.0 447488.0 167936.0 2685952.0 1980928.0 1980928.0
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC CGC
0.0 1056768.0 4864.0 0.0 1048576.0 512.0 10 5 -
各區百分比
- 新生代Eden區(E, 表示Eden) : 使用了99.72%的空間
- 2個Survivor區(S0、 S1, 表示Survivor0、 Survivor1) : 使用 99.96% 0.00%
- 老年代(O, 表示Old) : 使用 47.20%的空間
- 元空間(M, 表示 Metaspace) : 使用41.42%
- 共發生Minor GC(YGC, 表示Young GC) : 16次, 總耗時0.105秒;
- 發生Full GC(FGC, 表示Full GC): 3次, 總耗時(FGCT, 表示Full GC Time) 為0.472秒;
- 所有GC總耗時(GCT, 表示GC Time) : 1.017秒
C:\Users\cpucode>jstat -gcutil 19672
S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT
99.96 0.00 99.72 72.03 78.90 81.28 10 0.632 5 0.385 - - 1.017
上次垃圾回收的原因
C:\Users\cpucode>jstat -gccause 19672
S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT LGCC GCC
19.30 0.00 28.69 99.67 78.90 81.28 12 0.977 7 0.651 - - 1.628 Allocation Failure No GC
監視新生代
C:\Users\cpucode>jstat -gcnew 2668
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
386048.0 239104.0 0.0 42442.8 5 15 386048.0 235520.0 21311.8 7 0.272
監視新生代最值
C:\Users\cpucode>jstat -gcnewcapacity 2668
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC CGC
83968.0 1342464.0 1342464.0 447488.0 447488.0 447488.0 417280.0 1341440.0 333312.0 9 4 -
監視老年代
C:\Users\cpucode>jstat -gcold 2668
MC MU CCSC CCSU OC OU YGC FGC FGCT CGC CGCT GCT
4864.0 3837.5 512.0 416.2 2016256.0 1432084.3 10 5 0.344 - - 0.920
監視老年代最值
C:\Users\cpucode>jstat -gcoldcapacity 2668
OGCMN OGCMX OGC OC YGC FGC FGCT CGC CGCT GCT
167936.0 2685952.0 2016256.0 2016256.0 10 5 0.344 - - 0.920
監視永生代最值
隻能用到 JDK7之前 才能使用
輸出即時編譯器資訊
C:\Users\cpucode>jstat -compiler 9104
Compiled Failed Invalid Time FailedType FailedMethod
83 0 0 0.06 0
輸出被即時編譯的方法
C:\Users\cpucode>jstat -printcompilation 9104
Compiled Size Type Method
83 65 1 java/util/Random next
jinfo: Java配置資訊工具
jinfo( Configuration Info for Java) : 實時檢視和調整虛拟機各項參數
輸出JVM的參數
C:\Users\cpucode>jinfo -flags 18632
VM Flags:
-XX:CICompilerCount=12 -XX:InitialHeapSize=257949696
-XX:MaxHeapSize=4125097984 -XX:MaxNewSize=1374683136
-XX:MinHeapDeltaBytes=524288 -XX:NewSize=85983232
-XX:OldSize=171966464 -XX:+UseCompressedClassPointers
-XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation
-XX:+UseParallelGC
輸出Java系統屬性
C:\Users\cpucode>jinfo -sysparops 18632
Java System Properties:
#Mon Jan 18 19:46:17 CST 2021
java.runtime.name=OpenJDK Runtime Environment
sun.boot.library.path=D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\bin
java.vm.version=25.272-b10
java.vm.vendor=AdoptOpenJDK
java.vendor.url=https\://adoptopenjdk.net/
path.separator=;
java.vm.name=OpenJDK 64-Bit Server VM
file.encoding.pkg=sun.io
user.script=
user.country=CN
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=D\:\\Date\\github\\java
java.runtime.version=1.8.0_272-b10
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\endorsed
os.arch=amd64
java.io.tmpdir=C\:\\Users\\cpucode\\AppData\\Local\\Temp\\
line.separator=\r\n
java.vm.specification.vendor=Oracle Corporation
user.variant=
os.name=Windows 10
sun.jnu.encoding=GBK
java.library.path=D\:\\Program Files\\Java\\jdk8u272-b10\\bin;C\:\\Windows\\Sun\\Java\\bin;C\:\\Windows\\system32;C\:\\Windows;C\:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C\:\\Windows\\system32;C\:\\Windows;C\:\\Windows\\System32\\Wbem;C\:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C\:\\Windows\\System32\\OpenSSH\\;D\:\\Program Files\\nodejs\\;D\:\\Program Files\\java\\jdk-14.0.2\\bin;D\:\\Program Files\\Java\\jdk8u272-b10\\bin;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\bin;D\:\\Program Files\\MySQL\\MySQL Server 5.5\\bin;D\:\\Program Files\\apache-maven-3.6.3\\bin;D\:\\Program Files\\Python\\install\\Scripts\\;D\:\\Program Files\\Python\\install\\;D\:\\Program Files\\Java\\jdk-14.0.2\\bin;C\:\\Users\\cpucode\\AppData\\Local\\Microsoft\\WindowsApps;D\:\\Microsoft VS Code\\bin;D\:\\Git\\bin;C\:\\Users\\cpucode\\AppData\\Roaming\\npm;C\:\\Program Files\\Bandizip\\;D\:\\Program Files\\Python\\install;D\:\\Program Files\\Python\\install\\Scripts;D\:\\Program Files\\MySQL\\mysql-8.0.21-winx64\\bin;;.
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=10.0
user.home=C\:\\Users\\cpucode
user.timezone=Asia/Shanghai
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=UTF-8
java.specification.version=1.8
java.class.path=D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\charsets.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\access-bridge-64.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\cldrdata.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\dnsns.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\jaccess.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\localedata.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\nashorn.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\sunec.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\sunjce_provider.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\sunmscapi.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\sunpkcs11.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext\\zipfs.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\jce.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\jfr.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\jsse.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\management-agent.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\resources.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\rt.jar;D\:\\Date\\github\\java\\out\\production\\JVM;D\:\\Program Files\\JetBrains\\IntelliJ IDEA 2020.2.3\\lib\\idea_rt.jar
user.name=cpucode
java.vm.specification.version=1.8
sun.java.command=com.cpucode.java.heap.HeapInstanceTest
java.home=D\:\\Program Files\\Java\\jdk8u272-b10\\jre
sun.arch.data.model=64
user.language=zh
java.specification.vendor=Oracle Corporation
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.8.0_272
java.ext.dirs=D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\ext;C\:\\Windows\\Sun\\Java\\lib\\ext
sun.boot.class.path=D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\resources.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\rt.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\sunrsasign.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\jsse.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\jce.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\charsets.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\lib\\jfr.jar;D\:\\Program Files\\Java\\jdk8u272-b10\\jre\\classes
java.vendor=AdoptOpenJDK
file.separator=\\
java.vendor.url.bug=https\://github.com/AdoptOpenJDK/openjdk-support/issues
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.endian=little
sun.desktop=windows
sun.cpu.isalist=amd64
VM Flags:
-XX:CICompilerCount=12 -XX:InitialHeapSize=257949696 -XX:MaxHeapSize=4125097984 -XX:MaxNewSize=1374683136 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=85983232 -XX:OldSize=171966464 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
VM Arguments:
jvm_args: -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3\lib\idea_rt.jar=57853:D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3\bin -Dfile.encoding=UTF-8
java_command: com.cpucode.java.heap.HeapInstanceTest
java_class_path (initial): D:\Program Files\Java\jdk8u272-b10\jre\lib\charsets.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\jce.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\jfr.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\jsse.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\management-agent.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\resources.jar;D:\Program Files\Java\jdk8u272-b10\jre\lib\rt.jar;D:\Date\github\java\out\production\JVM;D:\Program Files\JetBrains\IntelliJ IDEA 2020.2.3\lib\idea_rt.jar
Launcher Type: SUN_STANDARD
jmap: Java記憶體映像工具
jmap( Memory Map for Java) : 生成堆轉儲快照( 一般稱為heapdump 或 dump 檔案)
jhat: 虛拟機堆轉儲快照分析工具
jhat( JVM Heap Analysis Tool) 指令與jmap搭配使用, 來分析jmap生成的堆轉儲快照。
jhat内置了一個微型的HTTP/Web伺服器, 生成堆轉儲快照的分析結果後, 可以在浏覽器中檢視
jstack: Java堆棧跟蹤工具
jstack( Stack Trace for Java) : 生成虛拟機目前時刻的線程快照( 一般稱為 threaddump 或者 javacore檔案)