雖然我是在jdk10環境下, 但是大體上和jdk8是差不多的. 總共有這麼多 本來想著一口氣把所有命令都邊學邊總結一下的, 結果發現....有些還真的不是很常用....或者說我這個水平還接觸不到那麼多. 於是我就把我能使用到的幾個常用的總結一下了. 當做是筆記了. jshell jshell啟動 j ...
雖然我是在jdk10環境下, 但是大體上和jdk8是差不多的. 總共有這麼多
本來想著一口氣把所有命令都邊學邊總結一下的, 結果發現....有些還真的不是很常用....或者說我這個水平還接觸不到那麼多. 於是我就把我能使用到的幾個常用的總結一下了. 當做是筆記了.
jshell
jshell啟動
jshell退出
jshell使用
就想python一樣, 可以每一行代碼都返回一個交互結果. 編寫短小的程式來運行的時候, 就不用新建項目, 然後新建一個類了...可以直接上核心代碼了.
還以為我從此以後不再需要計算器了
java的jshell計算大數的時候如下:(果然不出所料...失望..)
怎麼解決呢? 肯定是因為預設數字都是Integer型. 只好手動調用BigInteger了.
jcmd
jcmd -h 輸出jcmd的幫助信息.
jcmd -l 列印出所有jvm進程信息.
紅色圈出來的數字是pid, 也就是進程id
jcmd <pid> PerfCounter.print 性能統計信息
jcmd <pid> help 列出可執行的進程操作
jcmd <pid> VM.version 看JVM版本信息
從上面一小節的截圖中咱們挑一個執行一下. 比如 倒數第二行的VM.version
這樣就利用了VM.version操作列印出了JDK虛擬機的版本.
jcmd <pid> GC.class_histogram 查看系統中類統計信息
(和這個命令是一個效果 jmap -histo <pid> )
jcmd <pid> VM.uptime 查看 JVM 的啟動時長
jcmd <pid> Thread.print 查看線程堆棧信息
(等同於這個命令: jstack <pid> )
jcmd <pid> GC.run 對JVM執行System.gc()
jcmd <pid> VM.system_properties 查看JVM的系統配置信息
jcmd <pid> VM.flags 查看JVM的啟動參數
jhsdb命令
這個命令是jdk9之後才開始有的
jhsdb hsdb
這命令會打開圖形界面. 看起來很高大上的樣子...這個還有待學習....看知乎上R大介紹過, 學習學習.
jhsdb jmap --heap --pid <pid>
查看heap的信息,GC使用的演算法,heap的配置. (原來的jmap -heap 命令沒有了, 被這個命令代替了)
jmap
jmap -dump:live,format=b,file=dump.hprof <pid> 輸出堆信息到文件.
live指的是活著的對象, 如果不指定, 那麼就會輸出所有對象的
jmap -heap <pid> heap的信息,GC使用的演算法,heap的配置
jdk10 里發現不支持-heap了. 被前面的 `jhsdb jmap --heap --pid <pid>` 這個命令替代了.
jmap -finalizerinfo <pid> 列印等待回收的對象信息
輸出這個說明沒有F-QUEUE隊列中並沒有等待Fializer線程執行final
izer方法的對象
jmap -histo:live <pid> 列印堆的對象統計
(作用和這個命令相同 jcmd <pid> GC.class_histogram )
jmap -clstats <pid> 類載入器統計信息
jps
jps 顯示jvm進程id及name
jps -q 僅顯示進程id
jps -m 顯示主函數傳入的參數
jps -l 顯示全限定名
jps -v 顯示jvm參數
jstack
jstack <pid> 查看線程堆棧信息
(等同於這個命令 jcmd <pid> Thread.print)
jstat
jstat這裡講的更詳細: https://blog.csdn.net/zhaozheng7758/article/details/8623549