VisualVM(All-in-One Java Trouble shootingTool)是到目前爲止隨JDK發佈的功能最強大的運行監視和故障處理程序,而且能夠預見在將來一段時間內都是官方主力發展的虛擬機故障處理工具。
官方在VisualVM的軟件說明中寫上了「All-in-One」的描述字樣,預示着它除了運行監視、故障處理外,還提供了不少其餘方面的功能。如性能分析Profiling),VisualVM的性能分析功能甚至比起JProfiler、YourKit等專業且收費的Profiling工具都不會遜色多少,並且VisualVM的還有一個很大的優勢:不須要被監視的程序基於特殊Agent運行,所以它對應用程序的實際性能的影響很小,使得它能夠直接應用在生產環境中。這個優勢是JProfiler、YourKit等工具沒法與之媲美的。html
在命令行輸入jvisualvm:java
能夠直接看到本地啓動了那些java線程,一樣jvisualvm 也支持遠程鏈接,遠程鏈接遠程配置參考上一篇博客(JVM的監控工具之jconsole):http://www.javashuo.com/article/p-hosiafxg-bp.htmltomcat
本地鏈接遠程以下所示:工具
首先輸入遠程的主機名以及顯示名稱:性能
接下來是右鍵添加JMX連接:命令行
如圖配置:線程
能夠正常連接到遠程:能夠看到遠程的tomcat進程信息:htm
VisualVM能作到什麼?VisualVM能夠作到:
一、顯示虛擬機進程以及進程的配置、環境信息(jps、jinfo)。
二、監視應用程序的CPU、GC、堆、方法區以及線程的信息(jstat、jstack)。
三、dump以及分析堆轉儲快照(jmap、jhat)。
四、方法級的程序運行性能分析,找出被調用最多、運行時間最長的方法。
五、離線程序快照:收集程序的運行時配置、線程dump、內存dump等信息創建一個快照,能夠將快照發送開發者處進行Bug反饋。blog
面板各項參數做用介紹:進程
和JConsole差很少,不少顯示的東西都是重合的JVM參數和咱們用jps輸出的是同樣的,系統屬性和咱們用命令jinfo -sysprops看到的是同樣的。如圖所示:
概述頁籤能夠看到java 進程的一些屬性參數和JVM參數:
(2)監視
和咱們的JConsole界面顯示的很相似對吧。堆的大小、元數據空間的大小等等。堆dump就是能夠導出咱們當前線程的堆轉儲文件,其實就至關於咱們jdk的命令行中執行jmap的命令。
如圖所示:監視頁籤能夠從CPU佔用,堆內存佔用,元數據空間大小,以及線程數等維度進行監控,一樣也能夠進行來及回收,對快照分析等:
(3)線程
一樣也有Dump,一樣是和咱們JDK命令行工具的jstack是同樣的操做。能夠生成虛擬機當前時刻的線程快照。如圖所示:
線程頁籤能夠從線程的狀態,以及線程快照進行分析: