JVM優化之VisualVM工具的使用


什么是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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM