1. 程式人生 > >(8)利用JConsole工具監控java程式記憶體和JVM

(8)利用JConsole工具監控java程式記憶體和JVM

一.找到java應用程式對應的程序PI

部署的應用伺服器為tomcat6.028

  1. 啟動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引數分別設定堆的初始值和最大值。

此圖需要關注分析當前堆大小、堆大小的最大值、分配的記憶體,以及物理總記憶體和可用實體記憶體。