E:\itstack\git\github.com\interview>jps -m
111552 Main --branding visualvm --cachedir C:\Users\xiaofuge\AppData\Local\VisualVM\Cache/8u131 --openid 30413915693752002685296276 Launcher C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/plugins/java/lib/javac2.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/plugins/java/lib/aether-api-1.1.0.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/lib/jna-platform.jar;C:/Program Fi
les/JetBrains/IntelliJ IDEA 2019.3.1/lib/guava-27.1-jre.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/lib/httpclient-4.5.10.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/lib/forms-1.1-preview.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/plu
gins/java/lib/aether-connector-basic-1.1.0.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/plugins/java/lib/maven-model-builder-3.3.9.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/lib/jps-model.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/plu
gins/java/lib/maven-model-3.3.9.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/plugins/java/lib/aether-impl-1.1.0.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2019.3.1/lib/gson-2.8.5.jar;C:/Program File
5900016844 Jps -m
8460 Main --branding visualvm --cachedir C:\Users\xiaofuge\AppData\Local\VisualVM\Cache/8u131 --openid 304141433657920076188 Jstatd
E:\itstack\git\github.com\interview>jcmd 111552 Thread.print
111552:2021-01-1023:31:13
Full thread dump Java HotSpot(TM)64-Bit Server VM (25.161-b12 mixed mode):"Computes values in handlers" #52 daemon prio=5 os_prio=0 tid=0x0000000019839000 nid=0x16014 waiting for monitor entry [0x0000000026bce000]
java.lang.Thread.State: BLOCKED (on object monitor)
at com.sun.tools.visualvm.core.model.ModelFactory.getModel(ModelFactory.java:76)- waiting to lock <0x00000000f095bcf8>(a com.sun.tools.visualvm.jvmstat.application.JvmstatApplication)
at com.sun.tools.visualvm.application.jvm.JvmFactory.getJVMFor(JvmFactory.java:45)
at com.sun.tools.visualvm.application.options.Open.openApplication(Open.java:108)
at com.sun.tools.visualvm.application.options.Open.process(Open.java:93)
at org.netbeans.spi.sendopts.Option$1.process(Option.java:348)
at org.netbeans.api.sendopts.CommandLine.process(CommandLine.java:278)
at org.netbeans.modules.sendopts.HandlerImpl.execute(HandlerImpl.java:23)
at org.netbeans.modules.sendopts.Handler.cli(Handler.java:30)
at org.netbeans.CLIHandler.notifyHandlers(CLIHandler.java:195)
at org.netbeans.core.startup.CLICoreBridge.cli(CLICoreBridge.java:43)
at org.netbeans.CLIHandler.notifyHandlers(CLIHandler.java:195)
at org.netbeans.CLIHandler$Server$1ComputingAndNotifying.run(CLIHandler.java:1176)
E:\itstack\git\github.com\interview>jcmd 111552 GC.heap_dump C:\Users\xiaofuge1\Desktop\_dump_0110
111552:
Heap dump file created
导出的文件需要配合 jvisualvm 查看
2.8 jcmd pid help,列出可执行操作
E:\itstack\git\github.com\interview>jcmd 111552 help
111552:
The following commands are available:
JFR.stop
JFR.start
JFR.dump
JFR.check
2.9 jcmd pid help JFR.stop,查看命令使用
E:\itstack\git\github.com\interview>jcmd 111552 help JFR.stop
111552:
JFR.stop
Stops a JFR recording
Impact: Low
Permission: java.lang.management.ManagementPermission(monitor)
Syntax : JFR.stop [options]
Options:(options must be specified using the <key> or <key>=<value> syntax)
name :[optional] Recording name,.e.g \"My Recording\" (STRING, no default value)
recording :[optional] Recording number, see JFR.check for a list of available recordings (JLONG,-1)
discard :[optional] Skip writing data to previously specified file (if any)(BOOLEAN,false)
filename :[optional] Copy recording data to file, e.g. \"C:\Users\user\My Recording.jfr\" (STRING, no default value)
compress :[optional] GZip-compress "filename" destination (BOOLEAN,false)
3. jinfo Java配置信息工具
jinfo(Configuration Info for Java),实时查看和调整JVM的各项参数。
E:\itstack\git\github.com\interview>jmap 111552
Attaching to process ID 111552, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.161-b12
0x000000005b4a00001632K C:\Program Files\Java\jdk1.8.0_161\jre\bin\awt.dll
0x000000005b8c0000264K C:\Program Files\Java\jdk1.8.0_161\jre\bin\t2k.dll
0x000000005b910000284K C:\Program Files\Java\jdk1.8.0_161\jre\bin\fontmanager.dll
0x000000005b960000224K C:\Program Files\Java\jdk1.8.0_161\jre\bin\splashscreen.dll
0x000000005b9a000068K C:\Program Files\Java\jdk1.8.0_161\jre\bin\nio.dll
5.2 jmap -heap,堆详细信息
E:\itstack\git\github.com\interview>jmap -heap 111552
Attaching to process ID 111552, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.161-b12
using thread-local object allocation.
Parallel GC with 8thread(s)
Heap Configuration:
MinHeapFreeRatio =0
MaxHeapFreeRatio =100
MaxHeapSize =268435456(256.0MB)
NewSize =8388608(8.0MB)
MaxNewSize =89128960(85.0MB)
OldSize =16777216(16.0MB)
NewRatio =2
SurvivorRatio =8
MetaspaceSize =21807104(20.796875MB)
CompressedClassSpaceSize =1073741824(1024.0MB)
MaxMetaspaceSize =17592186044415 MB
G1HeapRegionSize =0(0.0MB)
5.3 jmap -clstats,打印加载类
E:\itstack\git\github.com\interview> jmap -clstats 111552
Attaching to process ID 111552, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.161-b12
finding classloader instances ..done.
computing per loader stat ..done.
please wait.. computing liveness.................................................................liveness analysis may be inaccurate ...
class_loader classes bytes parent_loader alive? type
<bootstrap>37796880779 null live <internal>0x00000000f03853b8571325740x00000000f031aac8 live org/netbeans/StandardModule$OneModuleClassLoader@0x00000001001684f00x00000000f01b9b98000x00000000f031aac8 live org/netbeans/StandardModule$OneModuleClassLoader@0x00000001001684f00x00000000f005b280000x00000000f031aac8 live java/util/ResourceBundle$RBClassLoader@0x00000001000c6ae00x00000000f01dfa98000x00000000f031aac8 live org/netbeans/StandardModule$OneModuleClassLoader@0x00000001001684f00x00000000f01ec518792528940x00000000f031aac8 live org/netbeans/StandardModule$OneModuleClassLoader@0x00000001001684f0
5.4 jmap -dump,堆转储文件
E:\itstack\git\github.com\interview>jmap -dump:live,format=b,file=C:/Users/xiaofuge/Desktop/heap.bin 111552
Dumping heap to C:\Users\xiaofuge\Desktop\heap.bin ...
Heap dump file created
E:\itstack\git\github.com\interview>jhat -port 8090 C:/Users/xiaofuge1/Desktop/heap.bin
Reading from C:/Users/xiaofuge1/Desktop/heap.bin...
Dump file created Wed Jan 1316:53:47 CST 2021
Snapshot read, resolving...
Resolving 246455 objects...
Chasing references, expect 49 dots.................................................
Eliminating duplicate references.................................................
Snapshot resolved.
Started HTTP server on port 8090
Server is ready.
http://localhost:8090/
7. jstack Java堆栈跟踪工具
jstack(Stack Trace for Java),用于生成虚拟机当前时刻的线程快照(threaddump、javacore)。