溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

發(fā)布時(shí)間:2021-09-27 09:46:52 來源:億速云 閱讀:303 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關(guān)java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

visual vm 是一個(gè)功能強(qiáng)大的多合一故障診斷和性能監(jiān)控可視化工具,使用 visual vm 可以替代 jstatjmap、jhat、jstack等。盡管如此,考慮到生產(chǎn)項(xiàng)目絕大多數(shù)發(fā)布在linux服務(wù)器,不支持gui界面,因此無法直接使用visual vm,所以生產(chǎn)上還是使用jstat、jmap、jhat、jstack等工具居多。

1. 安裝

jdk7jdk8 版本,可直接在命令行使用jvisualvm命令啟動(dòng)visual vm. 從jdk 9開始, visual VM不再集成在Oracle JDK中, 需要單獨(dú)下載安裝, 下載地址。安裝完成后需要配置環(huán)境變量,這樣之后就可以從命令行啟動(dòng)了。

visual vm 支持插件安裝,通過菜單欄Tools -> Plugins 打開插件安裝界面:

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

推薦安裝visual gc,可以方便地看到eden區(qū)、suvivor區(qū)、老年代、meatspace區(qū)等區(qū)域內(nèi)存空間占用及回收情況。

2. 連接應(yīng)用程序

visual vm 可以連接本地java應(yīng)用程序,也可以連接遠(yuǎn)程java應(yīng)用。

2.1 本地連接

開啟visual vm后,左側(cè)面板local節(jié)點(diǎn)下就會(huì)列出本機(jī)上所有的java線程,雙擊對(duì)應(yīng)的節(jié)點(diǎn),即可連接。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

2.2 遠(yuǎn)程連接

visaul vm也支持遠(yuǎn)程jmx連接,java應(yīng)用程序可以通過以下參數(shù)打開jmx端口:

-Djava.rmi.server.hostname=127.0.0.1 \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8888 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
例:遠(yuǎn)程連接admin.jar 項(xiàng)目
  1. 啟動(dòng)項(xiàng)目

java -jar -Djava.rmi.server.hostname=192.168.0.104 \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8888 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
admin.jar
  • -Djava.rmi.server.hostname 對(duì)應(yīng)的是要遠(yuǎn)程訪問的服務(wù)器ip,如果你的遠(yuǎn)程服務(wù)器ip是10.1.23.4,那么-Djava.rmi.server.hostname對(duì)應(yīng)的值就為10.1.23.4。

  • -Dcom.sun.management.jmxremote.port 指定遠(yuǎn)程服務(wù)器jmx開放的端口。

  1. 使用visualvm 連接 在visual vm的菜單欄,通過 File -> Add JMX Connection... 打開jmx連接面板

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

Connection欄中的192.168.0.104:8888對(duì)應(yīng)的就是啟動(dòng)參數(shù)中的-Djava.rmi.server.hostname-Dcom.sun.management.jmxremote.port 的值。

連接成功的界面如下:

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

再來一張本地直接連接的示例:

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

相比于本地直接連接,遠(yuǎn)程jmx連接少了Minitor、threadsSampler、Profiler等幾個(gè)功能,另外Visual GC 也無法在遠(yuǎn)程連接時(shí)使用:

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

3. 監(jiān)控應(yīng)用程序概況

通過visual vm,可以查看程序的基本概況,比如進(jìn)程id, Main Class, 啟動(dòng)參數(shù)等。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

單擊Tab頁面上的監(jiān)控頁面,即可監(jiān)控應(yīng)用程序的cpu、堆、永久區(qū)、類加載和線程的總體情況。通過頁面上的“執(zhí)行垃圾回收”和“堆dump”按鈕還可以手工執(zhí)行FullGC和生成堆快照。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

4. Thread Dump和分析

visual vm的線程頁面可以提供詳細(xì)的線程信息,單擊右上角的“線程dump”按鈕,可以導(dǎo)出當(dāng)前所有線程的堆棧信息(相當(dāng)于jstack命令)。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

5. 性能分析

visual vm 有兩個(gè)采樣器,在sample頁面顯示了cpu和內(nèi)存兩個(gè)性能采樣器,用于實(shí)時(shí)監(jiān)控應(yīng)用程序信息。cpu采樣器可以將cpu占用時(shí)間定位到方法,內(nèi)存采樣器可以查看當(dāng)前程序的堆信息。

通過visual vm的采樣功能,可以找到該程序中占用cpu時(shí)間最長(zhǎng)的方法,如圖所示,

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

visual vm 的默認(rèn)統(tǒng)計(jì)信息中,并不包含jdk的內(nèi)置對(duì)象的函數(shù)調(diào)用統(tǒng)計(jì),比如 java.* 包中的類。如果需要統(tǒng)計(jì)jdk內(nèi)的方法調(diào)用情況,需要單擊右上角的“設(shè)置”選項(xiàng),手工進(jìn)行配置。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

通過內(nèi)存采樣器,可以實(shí)時(shí)查看系統(tǒng)中的實(shí)例分布情況:

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

6. 內(nèi)存快照分析

使用右鍵菜單中的堆dump,可以立即獲得當(dāng)前應(yīng)用程序的內(nèi)存快照,如圖所示:

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

內(nèi)存快照如圖所求,在頂部的下拉框中,提示了4個(gè)基本功能頁:概要、對(duì)象、線程和OQL控制臺(tái)。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

  1. 概要頁面展示了當(dāng)前內(nèi)存的整體信息,包括內(nèi)存大小、實(shí)例總數(shù)、類總數(shù)等。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

  1. 對(duì)象頁面,以類為索引,顯示了每個(gè)類的實(shí)例數(shù)和占用空間。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

  1. 在線程頁面,展示了當(dāng)前應(yīng)用dump時(shí)的線程堆棧情況。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

  1. OQL控制臺(tái)提供了更強(qiáng)大的對(duì)象查詢功能。

java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的

看完上述內(nèi)容,你們對(duì)java jdk中的可視化性能監(jiān)控工具visual vm是怎樣的有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI