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
输出本地虚拟机唯一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文件)