天天看點

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

JDK常用指令行工具(基于JDK10)

原文連結:JDK常用指令行工具(基于JDK10)

雖然我是在jdk10環境下, 但是大體上和jdk8是差不多的. 總共有這麼多

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

本來想着一口氣把所有指令都邊學邊總結一下的, 結果發現....有些還真的不是很常用....或者說我這個水準還接觸不到那麼多.  于是我就把我能使用到的幾個常用的總結一下了.  當做是筆記了.

jshell

jshell啟動

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jshell退出

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jshell使用

就想python一樣, 可以每一行代碼都傳回一個互動結果. 編寫短小的程式來運作的時候, 就不用建立項目, 然後建立一個類了...可以直接上核心代碼了.

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)
JDK常用的指令行工具JDK常用指令行工具(基于JDK10)
JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

還以為我從此以後不再需要電腦了

java的jshell計算大數的時候如下:(果然不出所料...失望..)

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

怎麼解決呢? 肯定是因為預設數字都是Integer型. 隻好手動調用BigInteger了.

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd

jcmd -h  輸出jcmd的幫助資訊.

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd -l   列印出所有jvm程序資訊.

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

紅色圈出來的數字是pid, 也就是程序id

jcmd <pid> PerfCounter.print  性能統計資訊

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)
JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd <pid> help    列出可執行的程序操作

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)
JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd <pid> VM.version   看JVM版本資訊

從上面一小節的截圖中咱們挑一個執行一下. 比如 倒數第二行的VM.version

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

這樣就利用了VM.version操作列印出了JDK虛拟機的版本.

jcmd <pid> GC.class_histogram  檢視系統中類統計資訊

(和這個指令是一個效果 jmap -histo <pid>  )

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd <pid> VM.uptime    檢視 JVM 的啟動時長

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd <pid> Thread.print   檢視線程堆棧資訊

(等同于這個指令:   jstack <pid> )

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd <pid> GC.run   對JVM執行System.gc()

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd <pid> VM.system_properties  檢視JVM的系統配置資訊

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jcmd <pid> VM.flags  檢視JVM的啟動參數

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jhsdb指令

這個指令是jdk9之後才開始有的

jhsdb hsdb

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

這指令會打開圖形界面. 看起來很高大上的樣子...這個還有待學習....看知乎上R大介紹過, 學習學習.

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jhsdb jmap --heap --pid <pid>

檢視heap的資訊,GC使用的算法,heap的配置. (原來的jmap -heap 指令沒有了, 被這個指令代替了)

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jmap

jmap -dump:live,format=b,file=dump.hprof <pid>  輸出堆資訊到檔案.

live指的是活着的對象, 如果不指定, 那麼就會輸出所有對象的

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jmap -heap <pid>  heap的資訊,GC使用的算法,heap的配置

jdk10 裡發現不支援-heap了. 被前面的  `jhsdb jmap --heap --pid <pid>`  這個指令替代了.

jmap -finalizerinfo <pid>   列印等待回收的對象資訊

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

輸出這個說明沒有

F-QUEUE隊列中并沒有等待Fializer線程執行final

izer方法的對象

jmap -histo:live <pid>  列印堆的對象統計

(作用和這個指令相同   jcmd <pid> GC.class_histogram   )

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

 jmap -clstats <pid>  類加載器統計資訊

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jps

jps 顯示jvm程序id及name

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jps -q 僅顯示程序id

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jps -m  顯示主函數傳入的參數

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jps -l  顯示全限定名

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jps -v  顯示jvm參數

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jstack 

jstack <pid>  檢視線程堆棧資訊

(等同于這個指令 jcmd <pid> Thread.print)

JDK常用的指令行工具JDK常用指令行工具(基于JDK10)

jstat 

jstat這裡講的更詳細:  https://blog.csdn.net/zhaozheng7758/article/details/8623549