console是JDK自帶的監控工具。它用於連接正在運行的本地或者遠程的JVM,對運行在java應用程序的資源消耗和性能進行監控,並畫出大量的圖表,提供強大的可視化界面。而且本身占用的服務器內存很小,甚至可以說幾乎不消耗,不失為一款好工具。
Jconsole的使用方法,稍微復雜一些。
首先,來看看如何使用Jconsole 連接到遠程linux服務器。
1. 在本地安裝JDK 6.0版本。
2. 需要在遠程服務器的jboss配置文件中,添加遠程服務端口,並啟動jboss。如下:
JAVA_OPTS=”$JAVA_OPTS -Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=$HOSTNAME”
3. 在本地java/bin目錄下找到jconsole.exe文件,運行。打開界面后,就可以連接了。
如果只是監聽本地的jvm內存消耗則不需要如此麻煩,只要選擇監聽“本地進程”即可。
4. 當Jconsole連接成功后,它從JMX獲取信息,我們便可以在里面監控具體的內容。 接下來,看一下這個工具的總括。
Jconsole能捕獲到以下信息:
概述 - JVM概述和一些監控變量的信息
內存 - 內存的使用信息(常用,查看jvm的內存使用情況)
線程 - 線程的使用信息
類 - 加載java類的信息
VM - JVM摘要
MBeans - 所有MBeans的信息
有了上面的概念之后,性能測試過程中需要關注哪些信息呢?一般主要關注內存欄、線程欄、類欄,概述欄和VM欄次之,MBeans欄在追蹤具體問題時用到。下面詳細說明一下使用方法。
1. 內存欄
內存欄中顯示了內存堆棧消耗情況、內存池分區統計情況、垃圾回收情況等內容,並以圖表實行顯示出來。點擊圖表下拉框,可以選擇具體需要的圖。
特別說明,在這里,還可以強制執行GC,另內存回收更加爽歪歪!
補充內容:各個內存區域(下圖紅色區域)分析
以上圖表顯示了JVM的內存使用和時間的對應關系,包括heap和non-heap內存以及指定的(specific)內存池。內存池種類與具體使用的JVM有關,以HotSpot JVM為例,內存池有:
(1) Eden Space(heap):大多數對象初始化時從Eden Space池分配內存,即是存在於此池中
(2) Survivor Space(heap):此池包含的對象是那些原先在eden space中,但是已經經歷過垃圾回收而仍然存在的對象。
(3) Tenured Generation(heap):在surviver space中已經存在了一段時間之后的對象會移動到這個池中。
(4) Permanent Generation(non-heap):包含虛擬機自身的所有反射數據。比如class和mothod對象。對於使用class data sharing的JVM,這一代分為只讀和讀寫兩個區域。
Code Cache (non-heap):HotSpot JVM也包含一個“代碼緩存”,是編譯和存儲本地代碼所占用的內存。
查看關於內存池的詳細信息:Garbage Collection.
Detail區域顯示了幾種當前內存度量:
(1) Used(已使用):當前使用的內存總量。使用的內存總量是指所有的對象占用的內存,包括可達和不可達的對象。
(2) Committed(分配):JVM可使用的內存量。Committed內存數量可能隨時間變化而變化。JAVA虛擬機可能將某些內存釋放,還給操作系統,committed內存可能比啟動時初始分配的內存量要少。Committed內存總是大於等於used內存。
(3)Max(最大值):內存管理可用的最大內存數量。此值可能改變或者為未定義。如果JVM試圖增加使用內存(used memory)超出了committed內存,那么即時使用內存小於或者等於最大內存(比如系統虛擬內存較低),內存分配仍可能失敗。
右下角的圖表顯示了內存池在heap和non-heap消耗的內存量。當內存使用超出了內存使用閥值時,柱狀圖會變紅。你可以通過設置MemoryMXBean的一個屬性來調整內存占用閥值。
2. 線程欄
線程欄中顯示了當前運行的線程,並以圖表實行顯示出來。對於啟用多線程系統分析,非常有用。例如,它可以協助我們追蹤線程狀態、線程阻塞、線程等待、線程掛起、線程資源爭用問題。
3.類欄
類欄中顯示了當前加載類的信息。並以圖表實行顯示出來。如果要了解當前載入類的數量、已載入類的總數量、已卸載類的總數量,在這里查看非常有用。
工具的使用,就介紹到這里。這款工具的好處在於,占用系統資源少,而且結合上期提到的Jstat,可以有效監控到java內存的變動情況,以及引起變動的原因。在項目追蹤內存泄露問題時,很實用。
但是它也有缺點,就是采集的信息比較難分析,不如JProfiler直觀,需要有專業基礎才能看得懂。
本文轉載於CSDN博文
原文地址:http://blog.csdn.net/lengyuhong/article/details/6200355