- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- java jdk中的可視化性能監控工具visual vm是怎樣的
今天就跟大家聊聊有關(guān)java jdk中的可視化性能監控工具visual vm是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
visual vm
是一個(gè)功能強大的多合一故障診斷和性能監控可視化工具,使用 visual vm
可以替代 jstat
、jmap
、jhat
、jstack
等。盡管如此,考慮到生產(chǎn)項目絕大多數發(fā)布在linux,不支持gui界面,因此無(wú)法直接使用visual vm
,所以生產(chǎn)上還是使用jstat
、jmap
、jhat
、jstack
等工具居多。
jdk7
及 jdk8
版本,可直接在命令行使用jvisualvm
命令啟動(dòng)visual vm
. 從jdk 9開(kāi)始, visual VM
不再集成在Oracle JDK
中, 需要單獨下載安裝, 下載地址。安裝完成后需要配置環(huán)境變量,這樣之后就可以從命令行啟動(dòng)了。
visual vm
支持插件安裝,通過(guò)菜單欄Tools
-> Plugins
打開(kāi)插件安裝界面:
推薦安裝visual gc
,可以方便地看到eden區、suvivor區、老年代、meatspace區等區域內存空間占用及回收情況。
visual vm
可以連接本地java應用程序,也可以連接遠程java應用。
開(kāi)啟visual vm
后,左側面板local
節點(diǎn)下就會(huì )列出本機上所有的java線(xiàn)程,雙擊對應的節點(diǎn),即可連接。
visaul vm
也支持遠程jmx連接,java應用程序可以通過(guò)以下參數打開(kāi)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"
admin.jar
項目啟動(dò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
對應的是要遠程訪(fǎng)問(wèn)的服務(wù)器ip,如果你的遠程服務(wù)器ip是10.1.23.4,那么-Djava.rmi.server.hostname
對應的值就為10.1.23.4。
-Dcom.sun.management.jmxremote.port
指定遠程服務(wù)器jmx
開(kāi)放的端口。
使用visualvm
連接 在visual vm
的菜單欄,通過(guò) File
-> Add JMX Connection...
打開(kāi)jmx
連接面板
Connection欄中的192.168.0.104:8888
對應的就是啟動(dòng)參數中的-Djava.rmi.server.hostname
與 -Dcom.sun.management.jmxremote.port
的值。
連接成功的界面如下:
再來(lái)一張本地直接連接的示例:
相比于本地直接連接,遠程jmx連接少了Minitor
、threads
、Sampler
、Profiler
等幾個(gè)功能,另外Visual GC
也無(wú)法在遠程連接時(shí)使用:
通過(guò)visual vm
,可以查看程序的基本概況,比如進(jìn)程id, Main Class, 啟動(dòng)參數等。
單擊Tab頁(yè)面上的監控頁(yè)面,即可監控應用程序的cpu、堆、永久區、類(lèi)加載和線(xiàn)程的總體情況。通過(guò)頁(yè)面上的“執行垃圾回收”和“堆dump”按鈕還可以手工執行FullGC和生成堆快照。
visual vm
的線(xiàn)程頁(yè)面可以提供詳細的線(xiàn)程信息,單擊右上角的“線(xiàn)程dump”按鈕,可以導出當前所有線(xiàn)程的堆棧信息(相當于jstack
命令)。
visual vm
有兩個(gè)采樣器,在sample頁(yè)面顯示了cpu和內存兩個(gè)性能采樣器,用于實(shí)時(shí)監控應用程序信息。cpu采樣器可以將cpu占用時(shí)間定位到方法,內存采樣器可以查看當前程序的堆信息。
通過(guò)visual vm
的采樣功能,可以找到該程序中占用cpu時(shí)間最長(cháng)的方法,如圖所示,
在visual vm
的默認統計信息中,并不包含jdk的內置對象的函數調用統計,比如 java.*
包中的類(lèi)。如果需要統計jdk內的方法調用情況,需要單擊右上角的“設置”選項,手工進(jìn)行配置。
通過(guò)內存采樣器,可以實(shí)時(shí)查看系統中的實(shí)例分布情況:
使用右鍵菜單中的堆dump
,可以立即獲得當前應用程序的內存快照,如圖所示:
內存快照如圖所求,在頂部的下拉框中,提示了4個(gè)基本功能頁(yè):概要、對象、線(xiàn)程和OQL控制臺。
概要頁(yè)面展示了當前內存的整體信息,包括內存大小、實(shí)例總數、類(lèi)總數等。
對象頁(yè)面,以類(lèi)為索引,顯示了每個(gè)類(lèi)的實(shí)例數和占用空間。
在線(xiàn)程頁(yè)面,展示了當前應用dump時(shí)的線(xiàn)程堆棧情況。
OQL控制臺提供了更強大的對象查詢(xún)功能。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站