細述 Java垃圾回收機制→Java Garbage Collection Monitoring and Analysis
Java垃圾回收監(jiān)控和分析工具
- Java VisualVM
- Naarad
- GCViewer
- IBM Pattern Modeling and Analysis Tool for Java Garbage Collector
- HPjmeter
- IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory
- Visualizer
- Verbose GC Analyzer
Java VisualVM
Java VisualVM是在Java SE SDK安裝時免費提供的。看下你的Java JDK安裝目錄下的/bin目錄,Javajdk1.8.0bin。此目錄下有許多其他工具包括javac和java工具,jvisualvm就是其中一個。
Java VisualVM對運行中的Java應(yīng)用提供了可視化的信息展示。它是很多工具的整合包,像工具JConsole,jstat,jinfo,jstack以及jmap現(xiàn)在都是Java VisualVM的一部分。
Java VisualVM可以用來 - 生成和分析堆內(nèi)存的dump - 觀察和操作MBeans - 監(jiān)控垃圾回收 - 內(nèi)存和CPU性能分析
Launch VisualVM
jvisualvm已經(jīng)包含在了JDK的bin目錄下,如果以設(shè)置環(huán)境變量path,則可以直接在命令行中運行jvisualvm,將出現(xiàn)如下啟動界面

安裝Visual GC插件
我們需要安裝visual GC 插件才能有個堆Java GC線程的漂亮和有價值的視覺感受。在上面的啟動界面中點擊工具->插件->可用插件->Visual GC
(不知道什么原因,這張圖片就是上傳不成功,只有附上外鏈地址將就看了,抱歉)
安裝。
監(jiān)控GC
現(xiàn)在可以監(jiān)控垃圾回收過程了。開啟你的Java應(yīng)用程序,Java VisualVM會自動檢測并將其顯示到界面上。在左邊“應(yīng)用程序”面板的“本地”節(jié)點下面,所有本地運行的Java應(yīng)用都會被列舉出來。
Java VisualVM自己本身也是一個Java應(yīng)用程序,因此它自身也被列了出來。作為本文的目的我們將監(jiān)控VisualVM應(yīng)用本身的GC過程。
雙擊“本地”節(jié)點下的VisualVM圖標。
這樣應(yīng)用程序的監(jiān)控面板會在右邊打開。面板上有多個標簽,每個里面展示了與應(yīng)用程序性能相關(guān)的方面。由于我們現(xiàn)在主要關(guān)注“Visual GC”,so,點之。
上面的圖片顯示了Old,Eden,S0,S1使用的內(nèi)存空間。下面的圖表顯示了各個部分申請和釋放內(nèi)存的詳細信息。它以設(shè)定的刷新頻率不停地跟新。
上圖顯示的是一個正常運行的程序。當發(fā)生內(nèi)存泄露或者不正常的操作時,可以從圖形本身明顯地看出來。至少我們可以知道程序中存在和對象內(nèi)存分配和垃圾回收相關(guān)的問題。然后利用其他標簽如“Threads”中提供的信息和Thread Dump我們可以縮小發(fā)生問題的范圍。
在“監(jiān)視”標簽中,我們可以看到以時間線發(fā)展的內(nèi)存使用概況圖。這里有個“執(zhí)行垃圾回收”按鈕可以調(diào)用垃圾回收過程。
在“抽樣器”標簽中我們可以開始內(nèi)存和CPU分析工作。抽樣器會實時顯示各個實例的使用情況。它可以幫助確定性能問題到底發(fā)生在哪里。
到此為止,關(guān)于Java 垃圾回收的系列文章已經(jīng)完結(jié)了。