总结列表
名称 | 主要作用 | 执行样例 |
---|---|---|
jps | JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 | jps -lv 显示虚拟机参数 |
jstat | 虚拟机统计信息监视工具 | jstat -gcutil pid关注gc中已用空间占总空间比值 |
jinfo | Java配置信息工具 | jinfo -flags pid打印出所有JVM参数 |
jmap | Java内存映像工具 | jmap -dump:format=b,file=nihao.bin pid 在当前文件夹下输出dump |
jhat | 虚拟机转储快照分析工具(一般不用) | jhat xxx.bin解析dump |
jstack | Java堆栈跟踪工具 | jstack -F pid |
jps:虚拟机进程状况工具
jps选项 | 作用 |
---|---|
-q | 只输出pid,没有主类名 |
-m | 显示传递给main()的参数 |
-l | 显示全路径 |
-v | 显示虚拟机参数 |
jstat:虚拟机统计信息监视工具
jstat选项 | 作用 |
---|---|
-class | 监视类装载,卸载数量,总空间,类加载时间 |
-gc | 监视Java堆状况 |
-gcutil | 基本与gc相同,突出各空间占用比例 |
-compiler | 输出JIT编译的方法 |
jstat -gcutil 2868 //关注已用空间占总空间比值
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 63.34 80.00 17.34 19.94 0 0.000 0 0.000 0.000
//S0,S1指代两个Survivor区
//E 指代Eden区
//O 代表老年代
//M MetaSpace
//CCS 压缩使用比例
//YGC youngGC次数
//YGCT youngGC时间
//FGC FullGC次数
//FGCT FullGC时间
//GCT GC时间
jinfo:Java配置信息工具
我们使用jps -v可以查看虚拟机启动时,显示指定的参数列表,但是如果想知道未被显式指定的参数的系统默认值,我们可以加上 -XX:+PrintFlagsFinal打印各个变量的默认值,也可以使用 jinfo -flags 2868
实时打印出所有的JVM参数值
Attaching to process ID 2868, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.221-b11
Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=20971520 -XX:MaxHeapSize=20971520 -XX:MaxNewSize=10485760
-XX:MinHeapDeltaBytes=196608 -XX:NewSize=10485760 -XX:OldSize=10485760 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDet
ails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorder
edTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseSerialGC
Command line: -XX:+UseSerialGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xms20m -Xm
x20m -Xmn10m -XX:SurvivorRatio=8 -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.2.1\lib\idea_rt.jar=55302:C:\Pro
gram Files\JetBrains\IntelliJ IDEA 2019.2.1\bin -Dfile.encoding=UTF-8
或者使用 jinfo -flag InitialHeapSize 2868
来查看特定参数的value
jmap:Java内存映像工具
用于生成转储快照,即heapdump或者说dump文件
生成dump的几种方式
- 使用-XX:+HeapDumpOnOutOfMemoryError,OOM生成dump
- 使用-XX:+HeapDumpOnCtrlBreak按住ctrl加break生成dump,
- 在linux系统使用kill -3 pid 拿到dump
- jmap -dump:format=b,file=nihao.bin 2868
jmap -dump:format=b,file=nihao.bin 2868
Dumping heap to D:\myproject\JavaConcentration\src\main\java\com\practice\JavaString\nihao.bin ...
Heap dump file created
jhat:虚拟机转储快照分析工具
jhat搭配jmap进行使用,一般不用,简单了解下使用方法jhat xxx.bin
Reading from nihao.bin...
Dump file created Wed Dec 11 18:58:05 CST 2019
Snapshot read, resolving...
Resolving 26689 objects...
Chasing references, expect 5 dots.....
Eliminating duplicate references.....
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
jstack:Java堆栈跟踪工具
命令虚拟机当前时刻的线程快照
选项 | 作用 |
---|---|
-F | 正常输出不被响应,强制输出堆栈,如死锁时 |
-l | 除了堆栈,输出锁的信息 |
-m | 如果调用native方法,显示C/C++的堆栈 |
常用jstack -F pid |
接下来是图形化的两个JDK工具
Jconsole
jvisualvm
只能说太强了,这里书里图文并茂,就不说了,等到实际应用时更新