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