十二、JVM如何利用工具來監控調優前後的性能變化。


    工具做爲圖形化界面來展示更能直觀的發現問題,另一方面一些消耗性能的分析(dump文件分析)一般也不會在生產直接分析,往往dump下來的文件達1G左右,人工分析效率低,因此利用工具來分析jvm相關問題,常常可以達到事半功倍的效果來。


    JVM監控分析工具一般分爲兩類,一種是jdk自帶的工具,一種是第三方的分析工具。jdk自帶工具一般在jdk bin目錄下面,以exe的形式直接點擊就可以使用,其中包含分析工具已經很強大,幾乎涉及了方方面面,但是我們最常使用的只有兩款:jconsole.exe和jvisualvm.exe;第三方的分析工具有很多,各自的側重點不同,比較有代表性的:MAT(Memory Analyzer Tool),GChisto等。


    對於大型Java應用程序來說,再精細的測試也難以堵住所有的漏洞,即便我們在測試階段進行了大量卓有成效的工作,很多問題還是會在生產環境下暴露出來,並且很難再測試環境中進行重現。JVM能夠記錄下問題發生時系統的部分運行狀態,並將其存儲在堆轉儲(Heap Dump)文件中,從而爲我們分析和診斷問題提供了重要的依據。其中VisualVM和MAT是dump文件的分析利器。

   JDK自帶的工具

    jconsole
    Jconsole(Java Monitoring and Management Console)是從java5開始,在JDK自帶的java監控和管理控制檯,用於對JVM中內存,線程和類等的監控,是一個基於JMX(java management extensions)的GUI性能監測工具。jconsole使用jvm的擴展機制獲取並展示虛擬機中運行的應用程序的性能和資源消耗等信息。


    直接在jdk/bin目錄下點擊jconsole.exe即可啓動,界面如下:


    在彈出的框中可以選擇本機的監控本機的java應用,也可以選擇遠程的java服務來監控,如果監控遠程服務需要在tomcat啓動腳本中添加如下代碼:
        -Dcom.sun.management.jmxremote.port=6969  
        -Dcom.sun.management.jmxremote.ssl=false  
        -Dcom.sun.management.jmxremote.authenticate=false
    連接進去之後,就可以看到jconsole概覽圖和主要的功能:概述,內存,線程,類,VM,MBeans


    概述,以圖表的方式顯示出堆內存使用量,活動線程數,已加載的類,CPU佔用率的折線圖,可以非常清晰的觀察在程序執行過程中的變動情況。


    內存,主要展示了內存的使用情況,同時可以查看堆和非堆的變化值對比,也可以點擊執行GC來觸發GC的執行


    線程,主界面展示線程數的活動數和峯值,同時點擊左下方線程可以查看線程的詳細信息,比如線程的狀態是什麼,堆棧內容等,同時也可以點擊"監測死鎖"來檢查線程之間是否有死鎖的情況。


    ,主要展示以加載類的相關信息。


    VM概要,展示JVM所有信息總覽,包括基本信息,線程相關,堆相關,操作系統,VM參數等。


    MBean,查看MBean的屬性,方法等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章