qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          java虛擬機性能監控工具介紹

           最近在做性能測試,在性能調優過程中查閱了些虛擬機相關的知識,下面對虛擬機所用的性能監控的工具做個簡單的介紹和匯總。
            一、JDK命令行工具
            1.jps:虛擬機進程狀況工具
            列出正在運行的虛擬機進程,顯示虛擬機執行祝列的名稱,已經這些進程的本地虛擬機的唯一ID。此命令雖然功能單一,但它是使用頻率最高的JDK命令工具。
            Jps 命令格式:
            jps  [options] [hostid]
            2. jstat:虛擬機統計信息監視工具
            jstat(JVM Statistics Monitoring Tool)是用于監視虛擬機各種運行狀態信息的命令行工具。它可以顯示本地或遠程虛擬機進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據。在沒有GUI圖形界面,只提供了純文本控制臺環境服務器上,它將是運行期定位虛擬機性能問題的首選工具。
            jstat命令格式:
            jstat [option vmid [ interval [s|ms] [count] ] ]
            參數interval和count代表查詢的間隔和次數,如果省略這兩個參數,說明只查詢一次。
            例如:jstat –gc 3232 500 20
            命令含義為:每500ms查詢一次進行3232垃圾收集器的狀況,一共查詢20次。
            選項option代表用戶希望查詢虛擬機信息,主要分為3類;類裝載、垃圾收集和運行期編譯狀況。
            3. jinfo:Java配置信息工具
            jinfo(Configuration Info for Java)實時查看和調整虛擬機的各項參數。想知道未被顯示指定的參數的系統默認值,可以使用jinfo的-flag選項進行查詢,jinfo還可以使用-sysprops選項把虛擬機進行的System.getProperties()的內容打印出來。
            jinfo命令格式:
            jinfo [option] pid
            4.jmap:Java內存映像工具
            jmap(Memory Map for Java)于生成堆轉儲快照,查詢finalize執行隊列,Java堆和永久代的詳細信息等。
            jmap命令格式:
            jmap [option] vmid
            5.jstack:Java堆棧跟蹤工具
            jstack(Stack Trace for Java)用于生成虛擬機當前時刻的線程快照,定位線程出現長時間停頓的原因。
            jstack命令格式:
            jstack [option] vmid

            二、 JDK可視化工具
            1. Jconsole:java監視與管理控制臺
            JConsole可以說是前面介紹的所有功能性JDK工具的一個可視化版本,幾乎實現了JVM Manage API中提供的所有的功能。
            通過JDK/bin目錄下的“jconsole.exe”啟動JConsole。如圖1,雙擊其中一個進程即可開始監控,也可以使用“遠程進程”功能來連接遠程服務器,對遠程虛擬機進行監控。

            

          圖1


            圖2


           1)圖2“概述”頁顯示整個虛擬機主要運行數據的概覽。
            2)內存監控
            “內存”頁簽相當于可視化的jstat命令,用于監視收集器管理的虛擬機內存(java堆和永久代)的變化趨勢。
            3)線程監控
            “線程”頁簽的功能相當于可視化的jstack命令,遇到線程停頓的時候可以時候線程監控進行分析
            2.VisualVM:多合一故障處理工具
            VisualVM它除了運行監視、故障處理外,還提供了很多其他方面的功能。如性能分析(profiling),VisualVM的性能分析功能甚至比起JProfiler專業且收費工具都不會遜色多少,而且VisualVM還有一個很大的優點:不需要被監視的程序基于特殊的Agent運行,因此它對應用程序的實際性能影響很小,使得他可以直接應用在生產環境中。
            1)啟動VisualVM
            通過JDK/bin目錄下的“jvisualvm”啟動VisualVM,可以根據需要給VisualVM裝擴展插件,點擊“工具”-->“插件”菜單。
            2)生成和瀏覽堆轉儲快照
            可以通過以下2種方式生成:
            在“應用程序”窗口中右鍵單機應用程序節點,然后選擇“堆dump”;
            在“應用程序”窗口雙擊應用晨曦節點打開應用程序標簽,然后再“監視”標簽中單擊“堆dump”。
            生成了dump文件之后,應用程序頁簽將在堆的應用程序下增加以[heapdump]開頭的子節點,并在主頁簽中打開該轉儲快照,如圖3。


            “摘要”面板可以看到應用程序dump時運行的參數、線程堆棧等信息。
            “類”面板以類為統計口徑統計的類的實例數量和容量信息。
            “實例”面板需要通過“類”面板進去,在“類”中選擇關系的類后點擊,即可在實例中查看此類的實例信息。
            3)分析程序性能
            在Profiler頁簽中,提供了程序運行期間方法級的CPU執行時間分析及內存煩心,進行profiling肯定會對程序運行性能有比較大的影響,所以一般不在生產環境中使用這項功能。
            選擇“cpu”或“內存”,VisualVM會記錄這段時間中應用程序執行過的方法。Cpu分析會統計每個方法執行的次數、執行耗時。分詞分析則會統計每個方法關聯對象數及這些對象所占用的空間,如圖4。
            

          圖4

          posted on 2013-09-27 10:44 順其自然EVO 閱讀(3008) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          <2013年9月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 邵东县| 岢岚县| 鹤山市| 同江市| 大庆市| 北川| 昌黎县| 罗甸县| 宝丰县| 五家渠市| 凤翔县| 禹州市| 凭祥市| 彝良县| 平利县| 定兴县| 祁门县| 依兰县| 当涂县| 宁晋县| 浦江县| 屏南县| 罗山县| 临安市| 多伦县| 习水县| 巴中市| 建宁县| 平乡县| 横峰县| 曲阳县| 鹿邑县| 弥勒县| 清水河县| 沙坪坝区| 车险| 黄冈市| 剑河县| 卓尼县| 柏乡县| 景东|