JVM監控工具之jvisualvm
一、簡介
JVisualVM是Netbeans的profile子專案,已在JDK6.0 update 7 中自帶(bin/jvisualvm.exe),能夠監控執行緒,記憶體情況,檢視方法的CPU時間和記憶體中的物件,已被GC的物件,反向檢視分配的堆疊(如100個String物件分別由哪幾個物件分配出來的)。
二、配置
通過JVisualVM遠端連線伺服器監控JVM,需要在被監控的伺服器上tomcat的啟動檔案catalina.sh中加入以下配置:
JAVA_OPTS="-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.182.130 -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
JMX的相關引數:
引數名 | 型別 | 描述 |
-Dcom.sun.management.jmxremote | 布林 | 是否支援遠端JMX訪問,預設true |
-Dcom.sun.management.jmxremote.port | 數值 | 監聽埠號,方便遠端訪問 |
-Dcom.sun.management.jmxremote.authenticate | 布林 | 是否需要開啟使用者認證,預設開啟 |
-Dcom.sun.management.jmxremote.ssl | 布林 | 是否對連線開啟SSL加密,預設開啟 |
-Dcom.sun.management.jmxremote.access.file | 路徑 | 對訪問使用者的許可權授權的檔案的路徑,預設路徑JRE_HOME/lib/management/jmxremote.access
|
-Dcom.sun.management.jmxremote. password.file | 路徑 | 設定訪問使用者的使用者名稱和密碼,預設路徑JRE_HOME/lib/management/ jmxremote.password
|
三、連線
四、模組介紹
1、概述
概述介面,主要顯示JVM的資訊,包括JVM引數以及系統屬性等
2、監視
(1)按鈕“執行垃圾回收”可通知JVM執行Full GC
(2)按鈕“堆Dump”可生成堆記憶體快照,下面詳細講解堆Dump的使用
2.1、堆dump
2.1.1、概要
首先生成堆記憶體快照
把檔案下載到本地後使用JVisualVM開啟,如下圖:
(1)紅框標註的箭頭處,可以憑你的點選順序切換前後視窗
(2)查詢最大的物件,個數可自行定製;
(3)點選“顯示執行緒”可以顯示執行緒細節,如下所示:
(1)timed_waiting和runnable表示執行緒執行狀態
(2)daemon表示這個執行緒是守護執行緒,如沒有標記daemon則表示它是一個使用者執行緒,如main執行緒
(3)prio表示該執行緒的優先順序,在java執行緒中數字越大優先順序越高,取值在1至10之間,預設為5
(4)點選被標註成藍色的相關類,可以在類例項數介面檢視細節
2.1.2、例項數
(1)右上角的三個按鈕可以對介面進行定製
(2)點選“計算保留大小”可計算每個field的保留尺寸,簡言之就是它所佔的byte值
(3)右下角紅框處標記出了,不同的圖形代表不同的角色
2.1.3、類
(1)左下角可以通過過濾器來過濾顯示檢視
(2)右擊某個類可以讓其在例項介面顯示,檢視其細節
(3)點選右上角紅框處可以與另一個記憶體快照進行比較,在比較檢視中可以看出每個類的增加和減少的情況
2.1.4、QQL控制檯
(1)選中具體的Query例項,點選開啟,再點選執行就可以進行查詢了,儲存按鈕可以儲存你的query語句
(2)比較實用的是PermGen分析語句
3、執行緒
(1)執行緒的顏色從綠、紫、黃、褐、橙,分別代表執行、休眠、等待、駐留和死鎖
(2)點選執行緒Dump即可生成執行緒快照,其功能跟監視裡面堆dump生成的heapdump檔案裡面的顯示執行緒類似,如下圖:
4、抽樣器
4.1、抽樣器簡介:
(1)通過“設定”可以對CPU的取樣來源以及記憶體的重新整理時間進行設定
(2)點選CPU或者記憶體即可開始監控,點選Stop則停止取樣
4.2、CPU
4.2.1、CPU樣例
(1)點選執行緒Dump可生成執行緒快照
(2)點選快照可生成執行緒的快照,快照裡面包含了所有執行緒的呼叫樹以及其熱點編譯情況,如下圖所示:
4.2.2、執行緒CPU時間
(1)點選增量按鈕後,可記錄執行緒的變化,功能有點類似JProfilter的“Mark Current Values”。
4.3、記憶體
4.3.1、堆柱狀圖
功能與前面介紹過的類似
4.3.2、每個執行緒分配
功能與前面介紹過的類似