我的JDK工具地址
zxysMac:~ elwg$ cd /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/bin
zxysMac:bin elwg$ ls
appletviewer javah jjs jvisualvm schemagen
extcheck javap jmap keytool serialver
idlj javapackager jmc native2ascii servertool
jar jcmd jps orbd tnameserv
jarsigner jconsole jrunscript pack200 unpack200
java jdb jsadebugd policytool wsgen
javac jdeps jstack rmic wsimport
javadoc jhat jstat rmid xjc
javafxpackager jinfo jstatd rmiregistry
複製程式碼
JDK的命令列工具
名稱 | 全名 | 主要功能 |
---|---|---|
jps | JVM Process Status | 顯示指定系統的所有的虛擬機器程式 |
jstat | JVM Statistics Monitoring Tool | 用於收集虛擬機器各方面的執行資料 |
jinfo | Configuration Info for Java | 顯示虛擬機器配置資訊 |
jmap | Memory Map for Java | 生成虛擬機器的記憶體轉儲快照(heapdump檔案) |
jhat | JVM Heap Dump Browser | 用於分析heapdump檔案 |
jstack | Stack Trace for Java | 顯示虛擬機器的執行緒快照 |
jps:虛擬機器程式狀況工具
-
功能:可以列出執行的虛擬機器程式、看到虛擬機器執行的主類、本地虛擬機器唯一ID
-
命令格式:
jps [ option ] [ hostid ]
-
主要選項:
- 例子:我在IDEA中執行列一個java檔案,測試如下:
(base) zxysMac:~ elwg$ jps -l
16387 org.jetbrains.idea.maven.server.RemoteMavenServer
44422 sun.tools.jps.Jps
44392 com.zouxxyy.jvm.chap4.JpsTest
31368 org.jetbrains.kotlin.daemon.KotlinCompileDaemon
16217
44393 org.jetbrains.jps.cmdline.Launcher
複製程式碼
jstat:虛擬機器統計資訊監視工具
- 功能:可以顯示本地或遠端虛擬機器程式中的類裝載、記憶體、垃圾收集、JIT編譯等執行資料
- 命令格式:
jstat [ option vmid [interval[s|ms] [count]] ]
- 主要選項:
jinfo:Java配置資訊工具
-
功能:實時檢視和調整虛擬機器各項引數
-
命令格式:
jinfo [ option ] pid
-
例子:看有沒有用SerialGC
(base) zxysMac:~ elwg$ jinfo -flag UseSerialGC 46521
-XX:-UseSerialGC
複製程式碼
jmap:Java記憶體映像工具
- 功能:生成虛擬機器堆存轉儲快照(heapdump檔案)
- 命令格式:
jmap [ option] vmid
- 主要選項:
jhat:虛擬機器堆快照分析工具
與jmap配合使用,也就是分析堆存轉儲快照(heapdump檔案)。
jstack:Java堆疊跟蹤工具
- 功能:用於生成虛擬機器的執行緒快照
- 命令格式:
jstack [ option ] vmid
- 主要選項:
JDK的視覺化工具
JConsole:Java監視與管理控制檯
記憶體監控,相當於視覺化的jstat
命令
jstack
命令,以下舉幾個簡單的例子
- 監聽使用者鍵盤輸入
- 監聽wait()
- 監聽死鎖
VisualVM:多合一故障處理工具
書上說它很強大,我還沒下載成功。它幾乎整合裡上面的所有功能啊。