16年的時(shí)候花了一些時(shí)間整理了一些關(guān)于jvm的介紹文章,到現(xiàn)在回顧起來還是一些還沒有補(bǔ)充全面,其中就包括如何利用工具來監(jiān)控調(diào)優(yōu)前后的性能變化。工具做為圖形化界面來展示更能直觀的發(fā)現(xiàn)問題,另一方面一些耗費(fèi)性能的分析(dump文件分析)一般也不會在生產(chǎn)直接分析,往往dump下來的文件達(dá)1G左右,人工分析效率較低,因此利用工具來分析jvm相關(guān)問題,長長可以到達(dá)事半功倍的效果來。
jvm監(jiān)控分析工具一般分為兩類,一種是jdk自帶的工具,一種是第三方的分析工具。jdk自帶工具一般在jdk bin目錄下面,以exe的形式直接點(diǎn)擊就可以使用,其中包含分析工具已經(jīng)很強(qiáng)大,幾乎涉及了方方面面,但是我們最常使用的只有兩款:jconsole.exe和jvisualvm.exe;第三方的分析工具有很多,各自的側(cè)重點(diǎn)不同,比較有代表性的:MAT(Memory Analyzer Tool)、GChisto等。
對于大型 JAVA 應(yīng)用程序來說,再精細(xì)的測試也難以堵住所有的漏洞,即便我們在測試階段進(jìn)行了大量卓有成效的工作,很多問題還是會在生產(chǎn)環(huán)境下暴露出來,并且很難在測試環(huán)境中進(jìn)行重現(xiàn)。JVM 能夠記錄下問題發(fā)生時(shí)系統(tǒng)的部分運(yùn)行狀態(tài),并將其存儲在堆轉(zhuǎn)儲 (Heap Dump) 文件中,從而為我們分析和診斷問題提供了重要的依據(jù)。其中VisualVM和MAT是dump文件的分析利器。