前篇文章已經介紹了一些JDK 中自帶的監控工具,但是這些工具都是基于文本界面的,無法很直覺的看出程式運作的波動情況,這節就介紹一些圖形化的監控工具供大家更簡單容易的監控使用。
首先說幾個官方開發的圖形監控工具:
1.jvmstat
jvmstat是圖形版的jstat,由Java 官方提供,目前最新版本為3.0。
下載下傳位址:http://www.oracle.com/technetwork/java/jvmstat-142257.html
下載下傳之後解壓縮得到以下目錄結構:
目錄結構比較清晰,很容易就能分辨出各目錄的功能及作用:
bat:windows啟動程式
bin:linux啟動程式
docs:相關文檔
etc:linux相關依賴庫
jars:相關jar包
使用jvmstat 之前需要配置相應環境變量,環境變量配置如下:
- JVMSTAT_HOME:jvmstat安裝目錄
- JVMSTAT_JAVA_HOME:JDK所在目錄,與JAVA_HOME值相同
配置好兩個環境變量之後就可以運作jvmstat 了,運作指令為:
- visualgc pid
- #windows 系統進入bat 目錄後運作該指令
- #linux 系統進入bin 目錄後運作該指令
運作後界面自動打開并顯示相應内容,如圖所示:
從jvmstat 中可以清晰的觀察到彙編,加載,垃圾回收消耗的時間與各區域記憶體使用情況,在圖中s0與s1的記憶體使用永遠都是相斥的,即至多隻有一個會在使用。是以jvmstat 隻能作為一款基本的圖形監控工具。
評論:jvmstat 作為一款基本的JVM 圖形化監控工具,優點就是簡單易用,我們可以非常直覺的觀察堆記憶體的使用情況,當然僅僅為堆記憶體,是以jvmstat 具有一定的局限性。
2.JConsole
JConsole 是一個基于JMX 的圖形監控工具,用于連接配接正在運作的JVM,與前面提到的jvmstat 類似的圖形監控程式,可以以圖表化的形式顯示各種資料,并可通過遠端連接配接監視遠端的伺服器VM 情況,此類工具可以較直覺觀察各種變化,但比較耗費資源。
JDK8官方使用說明:https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html
JDK7官方使用說明:https://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html
需要添加參數:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6002 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
在JDK 1.5之後JConsole 已經成為JDK 自帶監控工具,隻需要在指令行狀态下輸入:
- jconsole
即可開啟監控界面,界面如下:
選擇本地監控還是遠端監控。
進入監控界面後,會有一些基本選項可以選擇,例如記憶體,線程,類等。
選擇記憶體選項後會顯示堆與非堆記憶體等使用情況。
概述選項:監控JVM和一些監控變量的資訊。
記憶體選項:記憶體使用資訊
線程選項:線程使用資訊
類選項:類調用資訊
VM摘要:JVM的資訊
MBean選項:所有MBean 的資訊MBean 展示了所有以一般形式注冊到JVM 上的MBean 。MBean 允許你擷取所有的平台資訊,包括那些不能從其他标簽頁擷取到的資訊。注意,其他标簽頁上的一些資訊也在MBean 這裡顯示。另外,你可以使用 MBean 标簽管理你自己的應用的MBean。
評論:與jvmstat 相比jconsole 就要強大的多了,從jconsole 中可以不光光監控到記憶體情況,還可以監控例如:線程,類,JVM參數等等進階資訊。jconsole 還可以根據記憶體等使用情況手動執行GC 清理,這給我們的程式監控與良好運作帶來了很大的便利。值得注意的是jconsole可以同時監控多個JVM 程序,在jconsole 中可以輕松的切換監控界面。
3.Java VisualVM
JDK1.6 中Java 引入了一個新的可視化的JVM 監控工具:Java VisualVM。
VisualVM 官方網站:http://visualvm.java.net/
VisualVM 提供在Java 虛拟機上運作的Java 應用程式的詳細資訊。在VisualVM 的圖形使用者界面中可以友善、快捷地檢視多個Java 應用程式的相關資訊。
運作VisualVM 非常簡單,隻需在指令行狀态下輸入:
- jvisualvm
VisualVM 便會自動啟動,之後可以看到如下界面:
通過起始頁的提示進入相應的學習文檔頁面,裡面有豐富的教程及講解,并且都是中文的!
"本地"清單下列出在本機運作的Java 程式的資源占用情況,如果本地有Java程式在運作的話啟動VisualVM 即可看到相應的程式名,點選程式名打開相應的資源監控菜單,以圖形的形式列出程式所占用的CPU、Heap、PermGen、類、線程的 統計資訊,如圖所示:
概述選項
監控選項
線程選項
"遠端"清單下列出遠端主機上的Java 程式的資源占用情況,但需要在遠端主機上運作jstatd 守護程式
更多的應用及用法可以參照官方文檔:
http://visualvm.java.net/zh_CN/gettingstarted.html?Java_VisualVM
評論:VisualVM 較JConsole 又強大了不少,其中又增加了許多功能與資訊,通過VisualVM 可以更加直覺的觀察各種内容的詳細資訊。
4.YourKit Java Profiler
YourKit 是一個用于分析Java 與.NET 應用程式的智能工具,YourKit Java Profiler 已經被IT 專業人士與分析師公認為最好的分析工具。通過YourKit 技術解決方案可以以非常高的的專業水準分析出CPU 與記憶體使用情況。
YourKit Java Profiler 還獲得了Java Developer's Journal(Java 開發者雜志)的編輯選擇獎,其功能的強大可見一斑。
YourKit 網站官方:http://www.yourkit.com YourKit Java Profiler 下載下傳位址:http://www.yourkit.com/download/index.jsp YourKit Java Profiler 提供了Java 與.NET 兩種語言的支援,并且支援基本所有作業系統,目前最新版本為12.0.6。
下載下傳界面如下:
下載下傳并安裝:
安裝完成後一次運作會提示授權本軟體,對于個人使用者其實可以免費使用YourKit Java Profiler,隻需在下載下傳頁面下方填寫相應授權資訊即可獲得授權碼,如圖所示:
授權後運作會顯示歡迎頁面,如下所示:
在歡迎頁面可以選擇監控運作中的JVM 程序,安裝eclipse 插件,使用教程等等内容。
勾選"Show all running JVMs"會在下拉清單中顯示所有JVM 程序,選擇其中之一點選即可進入監控界面:
上圖即為CPU 相關資訊的監控界面,從此界面可以觀察CPU 的使用情況等資訊。
還可以打開記憶體管理界面,檢視JVM 中各種記憶體的占有情況:
當然YourKit Java Profiler 的功能絕不僅僅于此,我們還可以參照YourKit Java Profiler 管文檔學習更加進階的監控功能使用,官方教程位址:http://www.yourkit.com/docs/index.jsp
評論:YourKit Java Profiler 可以說異常的強大,你能想到的YourKit Java Profiler 基本都實作了,是以如此之強悍的工具已經不需要我多說什麼,甚至你還可以購買它的付費版本,相信絕對會讓小夥伴們驚呆的。本節也隻是抛磚引玉的作用,更多更進階的特性需要大家在實踐中自我摸索。