更新時間:2020-10-23 17:26:46 來源:動力節(jié)點 瀏覽1447次
JVM是在java面試題中最常出現(xiàn)的題目類別之一,不僅是因為JVM屬于java零基礎的初學者首先要學習的內(nèi)容,更因為虛擬機是使java語言實現(xiàn)與平臺無關(guān)性這一特點的關(guān)鍵。這篇文章接著以前學習過的概念、JVM運行機制的內(nèi)容,繼續(xù)學習JVM的相關(guān)知識——JVM監(jiān)控工具,是大家要掌握的虛擬機的內(nèi)容。
1、jps:虛擬機進程狀況工具
jps主要用來輸出JVM中運行的進程狀態(tài)信息。語法格式如下:
jps [options] [hostid]
第一個參數(shù):options
-q 不輸出類名、Jar名和傳入main方法的參數(shù)-m 輸出傳入main方法的參數(shù)-l 輸出main類或Jar的全限名-v 輸出傳入JVM的參數(shù)
第二個參數(shù):hostid
主機或者是服務器的id,如果不指定,就默認為當前的主機或者是服務器。這是在Windows10系統(tǒng)下測試的,當然也可以在linux下試驗,方式是一樣的,結(jié)果可能有不同,可以選擇不同的參數(shù)選項來進行測試,打開CMD輸入相應命令。
2、jstack:堆棧跟蹤工具
jstack用于生成虛擬機當前時刻的線程快照。語法格式如下:
jstack [option] vmid
第一個參數(shù):option
第二個參數(shù):vmid
vmid是Java虛擬機ID,在Linux/Unix系統(tǒng)上一般就是進程ID。我們直接在CMD中操作一下:
3、jstat:虛擬機統(tǒng)計信息監(jiān)控工具
jstat監(jiān)視虛擬機各種運行狀態(tài)信息,可以顯示本地或者是遠程虛擬機進程中的類裝載、內(nèi)存、垃圾收集、JIT編譯等運行數(shù)據(jù)。語法格式如下:
jstat [ generalOption | outputOptions vmid [interval] [count]] ]
第一個參數(shù):generalOption | outputOptions。這個參數(shù)表示的option,代表著用戶希望查詢的虛擬機信息,分為類加載、垃圾收集、運行期編譯狀況3類。第二個參數(shù):vmid。vmid是Java虛擬機ID,在Linux/Unix系統(tǒng)上一般就是進程ID。第三個參數(shù):interval。interval是采樣時間間隔。第四個參數(shù):count。count表示的是采樣數(shù)。
4、jinfo:實時地查看和調(diào)整虛擬機各項參數(shù)
命令格式:jinfo [option] pid
第一個參數(shù):option
第二個參數(shù):pid。指定顯示的進程id。在CMD中進行測試:
5、jmap:內(nèi)存映像工具
用于生成堆轉(zhuǎn)存的快照,一般是heapdump或者dump文件。如果不適用jmap命令,可以使用-XX:+HeapDumpOnOutOfMemoryError參數(shù),當虛擬機發(fā)生內(nèi)存溢出的時候可以產(chǎn)生快照。或者使用kill -3 pid也可以產(chǎn)生。jmap的作用并不僅僅是為了獲取dump文件,它可以查詢finalize執(zhí)行隊列,java堆和永久代的詳細信息,如空間使用率,當前用的哪種收集器。jmap的命令格式:jmap [option] vmid。主要參數(shù)如下:
6、JConsole:JMX的可視化管理工具
這個工具相比較前面幾個工具,使用率比較高,很重要。它是一個java GUI監(jiān)視工具,可以以圖表化的形式顯示各種數(shù)據(jù)。并可通過遠程連接監(jiān)視遠程的服務器VM。用java寫的GUI程序,用來監(jiān)控VM,并可監(jiān)控遠程的VM,非常易用,而且功能非常強。在cmd里面輸入 jconsole,選則進程就可以了。(前提是在IDE工具先建立一個線程運行著)
然后我們選擇了相應的選項之后,進入這個工具就會出現(xiàn)下面這個界面
在上面有菜單,我們可以選擇其中一個進行查看就可以了,這個用具用起來很方便,使用頻率很高。
JVM監(jiān)控工具不僅在故障排查的時候會使用到,在做壓測的時候也需要查看java進程的有關(guān)參數(shù),有時候在JVM面試題中也會考察到這方面的內(nèi)容,所以上面關(guān)于JVM監(jiān)控工具的介紹,大家需要認真學習,并在java教程中學習JVM監(jiān)控工具的更多操作的使用。