一、基本信息
定義:VisualVM是一種集成了多個JDK命令行工具的可視化工具,主要提供對應用程序強大的分析能力。
作用:能夠監控線程,內存情況,查看方法的CPU時間和內存中的對象,以及已經被GC的對象、反向查看分配的堆棧(如100個String對象分別由哪幾個對象分配出來的)。
位置:在JDK_HOME/bin(默認是C:\Program Files\Java\jdk1.6.0_13\bin)目錄下面,有一個jvisualvm.exe文件,雙擊打開,從UI上來看,這個軟件是基於NetBeans開發的了。
效果:當本地有java程序運行時,本地節點下就會有相對應的java應用程序
二、用visualvm監控:
JVM 基礎信息:
JVM啓動參數、JRE取得系統參數
JVM 參數一般在catalina.bat中可以配置:
例如:-Xms256M -Xmx512M 等
系統參數: 平時可以用個System.getProperties();
java應用程序:
內存使用情況、線程情況、JVM啓動參數、cpu消耗情況、垃圾回收情況
等參數
三、用VisualVM解決問題:
1.利用VisualVM解決內存溢出問題
當這裏超過指定的最大內存
即Runtime.getRuntime().maxMemory();的值。
在下面類的裝載穩定後,查看PermGen佔大約多少內存,然後得到穩定最大內存,然後在啓動時,將這個值設置爲最大內存值就可以解決了。
2.通過visualvm查tomcat的線程情況,此方法對壓力測試時,很直觀。
開啓進程時
結束進程時
雙擊查看詳細:
3.使用visulvm查看CPU、內存使用情況
VisualVM提供CPU、內存監視功能,可以看到那些類消耗了CPU、內存,當應用耗費CPU、內存過高時,可以通過此功能對應用進行追蹤並調查原因。
注:單次只可以對同一個應用進行監視
4.在抽樣器中可以搜索類、方法等
附錄:
系統參數對照表
java.version | Java 運行時環境版本 |
java.vendor | Java 運行時環境供應商 |
java.vendor.url | Java 供應商的 URL |
java.home | Java 安裝目錄 |
java.vm.specification.version | Java 虛擬機規範版本 |
java.vm.specification.vendor | Java 虛擬機規範供應商 |
java.vm.specification.name | Java 虛擬機規範名稱 |
java.vm.version | Java 虛擬機實現版本 |
java.vm.vendor | Java 虛擬機實現供應商 |
java.vm.name | Java 虛擬機實現名稱 |
java.specification.version | Java 運行時環境規範版本 |
java.specification.vendor | Java 運行時環境規範供應商 |
java.specification.name | Java 運行時環境規範名稱 |
java.class.version | Java 類格式版本號 |
java.class.path | Java 類路徑 |
java.library.path | 加載庫時搜索的路徑列表 |
java.io.tmpdir | 默認的臨時文件路徑 |
java.compiler | 要使用的 JIT 編譯器的名稱 |
java.ext.dirs | 一個或多個擴展目錄的路徑 |
os.name | 操作系統的名稱 |
os.arch | 操作系統的架構 |
os.version | 操作系統的版本 |
file.separator | 文件分隔符(在 UNIX 系統中是“/”) |
path.separator | 路徑分隔符(在 UNIX 系統中是“:”) |
line.separator | 行分隔符(在 UNIX 系統中是“/n”) |
user.name | 用戶的賬戶名稱 |
user.home | 用戶的主目錄 |
user.dir | 用戶的當前工作目錄 |