(8)利用JConsole工具監控java程式記憶體和JVM
一.找到java應用程式對應的程序PI
部署的應用伺服器為tomcat6.028
- 啟動tomcat伺服器後,工作管理員裡可以看到多了java.exe程序,如圖
PS:這裡啟動了多個其他程式
2.查詢測試應用程式對應的程序PID號(根據埠號查詢)
1) Cmd命令:netstat -aon|findstr "7070"
二.啟動JConsole監控工具
方法一:
開啟cmd命令視窗,進入jdk安裝路徑下/bin目錄,
輸入命令:JConsole “PID號” 如圖:
如圖自動啟動並開啟JConsole監控介面:
方法二:進入jdk安裝目錄bin目錄下,雙擊執行JConsole.exe程式,選擇應用程式對應的PID程式連線或雙擊即可
三.對圖表進行效能分析
JConsole主要是監控java應用程式,它是jdk自帶的工具,一個基於JMX用於連線正在執行的JVM,會啟動com.sun.management.jmxremote實現預設地JMX管理客戶端。
1) 概要
概要介面可以實時檢視java應用程式的堆記憶體使用情況、執行緒、類以及CPU使用情況,如圖:
2) 記憶體
記憶體介面可以在圖表選擇“堆記憶體使用情況”和“非堆記憶體使用情況”實時圖,並顯示記憶體詳細資訊:使用記憶體、分配:最大值等,如圖:
PS:重點關注使用記憶體的佔比,使用記憶體與最大值之間的合理比值為1:3,已使用記憶體不能大於1/2最大值,否則記憶體存在瓶頸。
3) 執行緒
執行緒圖不是重點關注,只關注該執行緒情況,並可以檢測是否有死鎖執行緒。
4) 類
類圖並不是重點關注圖,與應用程式類的多少有關,無固定值。
1) VM摘要
VM摘要圖是觀察JVM使用情況圖
堆是由Java虛擬機器(JVM,下文提到的JVM特指Sun hotspot JVM)用來存放Java類、物件和靜態成員的記憶體空間,Java程式中建立的所有物件都在堆中分配空間,堆只用來儲存物件,應用程式通過存放在堆疊(Stack)內的引用來訪問堆資料,一個JVM程序只能擁有一個堆。JVM通過-Xms和-Xmx引數分別設定堆的初始值和最大值。
此圖需要關注分析當前堆大小、堆大小的最大值、分配的記憶體,以及物理總記憶體和可用實體記憶體。