Java 自帶性能監控工具:監視和管理控制台 jconsole,它可以提供 Java 某個進程的內存、線程、類加載、jvm 概要以及 MBean 等的實時信息。
通過Java SE Development監控JVM:
1)首先修改Tomcat的catalina.sh文件,添加以下內容,完后重啟tomcat應用。
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.247.132" ################################################################## #-Dcom.sun.management.jmxremote.port=12345 //端口隨意起不要與正在運行的沖突 #-Djava.rmi.server.hostname=192.168.247.132 //監控端IP
2)下載並運行Java SE Development,地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
然后就會進入分析界面:
性能分析
下面說說如何分析,如何使用這六個標簽
- 概述: Displays overview information about the Java VM and monitored values.
- 內存: 顯示內存使用信息
- 線程: 顯示線程使用信息
- 類: 顯示類裝載信息
- *VM摘要:*顯示java VM信息
- MBeans: 顯示 MBeans.
概述
在圖表上右擊可以保持數據到csv文件,可以使用其他工具來對數據分析。
內存
這個比較有價值,參看堆內存,非堆內存,內存池的狀況總體內存的分配和使用情況以及不同的GC進行垃圾回收的次數和時間。可以手動進行GC查看內存變化。
在分析JAVA內存問題進行調優時候非常有用,你要學習JVM內存模型,之后會發現這里的每個值都具有意義。
GC的算法和參數對性能有顯著的影響,注意垃圾回收次數、時間、以及partial GC和full GC,調整你所使用的不同GC和以及各個GC下的參數,然后在這個視圖下觀察,以得到好的性能。
這里貼一下 Java HotSpot VM garbage collector 下generational GC 的各代的划分圖:
關於GC,可以參考:http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
線程
左下角顯示所有的活動線程(如果線程過多,可以在下面的過濾欄中輸入字符串過濾出你想要觀察的線程)。點擊某個顯示會顯示這個線程的名稱、狀態、阻塞和等待的次數、堆棧的信息。
統計圖顯示的是線程數目的峰值(紅色)和當前活動的線程(藍色)。
另外下面有個按鈕“檢測到死鎖”,有時候會有用處。
類
VM摘要
MBean
另外jvisualvm.exe可以監控多個tomcat進程。