天天看點

[Java基礎]--JVM圖形化監控工具

  前篇文章已經介紹了一些JDK 中自帶的監控工具,但是這些工具都是基于文本界面的,無法很直覺的看出程式運作的波動情況,這節就介紹一些圖形化的監控工具供大家更簡單容易的監控使用。

        首先說幾個官方開發的圖形監控工具:

        1.jvmstat

        jvmstat是圖形版的jstat,由Java 官方提供,目前最新版本為3.0。

        下載下傳位址:​​http://www.oracle.com/technetwork/java/jvmstat-142257.html​​

        下載下傳之後解壓縮得到以下目錄結構:

[Java基礎]--JVM圖形化監控工具

        目錄結構比較清晰,很容易就能分辨出各目錄的功能及作用:

        bat:windows啟動程式

        bin:linux啟動程式

        docs:相關文檔

        etc:linux相關依賴庫

        jars:相關jar包 

        使用jvmstat 之前需要配置相應環境變量,環境變量配置如下:

  1. JVMSTAT_HOME:jvmstat安裝目錄  
  2. JVMSTAT_JAVA_HOME:JDK所在目錄,與JAVA_HOME值相同  

        配置好兩個環境變量之後就可以運作jvmstat 了,運作指令為:

  1. visualgc pid  
  2. #windows 系統進入bat 目錄後運作該指令  
  3. #linux 系統進入bin 目錄後運作該指令  

        運作後界面自動打開并顯示相應内容,如圖所示:

[Java基礎]--JVM圖形化監控工具

         從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 自帶監控工具,隻需要在指令行狀态下輸入:

  1. jconsole  

        即可開啟監控界面,界面如下:

[Java基礎]--JVM圖形化監控工具

        選擇本地監控還是遠端監控。

[Java基礎]--JVM圖形化監控工具

        進入監控界面後,會有一些基本選項可以選擇,例如記憶體,線程,類等。

[Java基礎]--JVM圖形化監控工具

        選擇記憶體選項後會顯示堆與非堆記憶體等使用情況。

        概述選項:監控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 非常簡單,隻需在指令行狀态下輸入:

  1. jvisualvm  

        VisualVM 便會自動啟動,之後可以看到如下界面:

[Java基礎]--JVM圖形化監控工具

        通過起始頁的提示進入相應的學習文檔頁面,裡面有豐富的教程及講解,并且都是中文的!

        "本地"清單下列出在本機運作的Java 程式的資源占用情況,如果本地有Java程式在運作的話啟動VisualVM 即可看到相應的程式名,點選程式名打開相應的資源監控菜單,以圖形的形式列出程式所占用的CPU、Heap、PermGen、類、線程的 統計資訊,如圖所示:

[Java基礎]--JVM圖形化監控工具

概述選項

[Java基礎]--JVM圖形化監控工具

監控選項

[Java基礎]--JVM圖形化監控工具

線程選項

        "遠端"清單下列出遠端主機上的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。

        下載下傳界面如下:

[Java基礎]--JVM圖形化監控工具

        下載下傳并安裝:

[Java基礎]--JVM圖形化監控工具
[Java基礎]--JVM圖形化監控工具

        安裝完成後一次運作會提示授權本軟體,對于個人使用者其實可以免費使用YourKit Java Profiler,隻需在下載下傳頁面下方填寫相應授權資訊即可獲得授權碼,如圖所示:

[Java基礎]--JVM圖形化監控工具

         授權後運作會顯示歡迎頁面,如下所示:

[Java基礎]--JVM圖形化監控工具

        在歡迎頁面可以選擇監控運作中的JVM 程序,安裝eclipse 插件,使用教程等等内容。

        勾選"Show all running JVMs"會在下拉清單中顯示所有JVM 程序,選擇其中之一點選即可進入監控界面:

[Java基礎]--JVM圖形化監控工具

        上圖即為CPU 相關資訊的監控界面,從此界面可以觀察CPU 的使用情況等資訊。

        還可以打開記憶體管理界面,檢視JVM 中各種記憶體的占有情況:

[Java基礎]--JVM圖形化監控工具

        當然YourKit Java Profiler 的功能絕不僅僅于此,我們還可以參照YourKit Java Profiler 管文檔學習更加進階的監控功能使用,官方教程位址:​​http://www.yourkit.com/docs/index.jsp​​

       評論:YourKit Java Profiler 可以說異常的強大,你能想到的YourKit Java Profiler 基本都實作了,是以如此之強悍的工具已經不需要我多說什麼,甚至你還可以購買它的付費版本,相信絕對會讓小夥伴們驚呆的。本節也隻是抛磚引玉的作用,更多更進階的特性需要大家在實踐中自我摸索。