什么是VisualVM?
VisualVM,能夠監控線程,內存情況,查看方法的CPU時間和內存中的對 象,已被GC的對象,
反向查看分配的堆棧(如100個String對象分別由哪幾個對象分配出來的)。
VisualVM使用簡單,幾乎0配置,功能還是比較豐富的,幾乎囊括了其它JDK自帶命令的所有功能
- 內存信息
- 線程信息
- Dump堆(本地進程)
- Dump線程(本地進程)
- 打開堆Dump。堆Dump可以用jmap來生成。
- 打開線程Dump
- 生成應用快照(包含內存信息、線程信息等等)
- 性能分析。CPU分析(各個方法調用時間,檢查哪些方法耗時多),內存分析(各類對象占用的內存,檢查哪些類占用內存多)
- ...........
啟動
在jdk的安裝目錄的bin目錄下,找到jvisualvm.exe,雙擊打開即可。
查看本地進程
查看CPU、內存、類、線程運行信息
查看線程詳情
也可以點擊右上角Dump按鈕,將線程的信息導出,其實就是執行的jstack命令。
抽樣器
抽樣器可以對CPU、內存在一段時間內進行抽樣,以供分析。
抽樣內存
抽樣cpu
監控遠程的jvm
VisualJVM不僅是可以監控本地jvm進程,還可以監控遠程的jvm進程,需要借助於JMX技術實現。
什么是JMX?
JMX(Java Management Extensions,即Java管理擴展)是一個為應用程序、設備、系統等植入管理功能的框架。
JMX可以跨越一系列異構操作系統平台、系統體系結構和網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用。
監控遠程的tomcat
想要監控遠程的tomcat,就需要在遠程的tomcat進行對JMX配置,方法如下:
注意:要將該的配置放在catalina.sh的上面,否則將無法創建JMX連接
#在tomcat的bin目錄下,修改catalina.sh,添加如下的參數 JAVA_OPTS="‐Dcom.sun.management.jmxremote ‐ Dcom.sun.management.jmxremote.port=9999 ‐ Dcom.sun.management.jmxremote.authenticate=false ‐ Dcom.sun.management.jmxremote.ssl=false" #這幾個參數的意思是: #‐Dcom.sun.management.jmxremote :允許使用JMX遠程管理 #‐Dcom.sun.management.jmxremote.port=9999 :JMX遠程連接端口 #‐Dcom.sun.management.jmxremote.authenticate=false :不進行身份認證,任何用 戶都可以連接 #‐Dcom.sun.management.jmxremote.ssl=false :不使用ssl
接下來就監控遠程JVM