JVM 內(nèi)存工具匯總,建議收藏!
點擊上方?藍字?關(guān)注我們!
jmap
JDK自帶了一些工具可以幫助我們查看JVM運行的堆內(nèi)存情況,常用的是jmap命令

jmap -heap

那么,從這個輸出中我們也可以大致看出堆的結(jié)構(gòu),分為Young Generation (年輕代) 和 Old Generation (老年代)
Young Generation又被劃分為:Eden Space , From Space 和 To Space
可以看到這里To區(qū)是干凈的,還未被使用,F(xiàn)rom區(qū)已經(jīng)使用了95%了
jmap -histo[:live]

jmap -dump:live,format=b,file=heap.bin
以hprof二進制格式dump堆的使用情況(PS:相當于生成一個快照,后續(xù)我們可以對這個快照文件進行分析)

Memory Analyzer (MAT)
文件dump下來以后,可以使用Eclipse的MAT插件進行查看
如果日常開發(fā)用的是eclipse的話,可以直接安裝這個插件,如果不是的話,這個插件也可以獨立運行
https://www.eclipse.org/mat/
https://www.eclipse.org/mat/downloads.php
解壓之后雙擊MemoryAnalyzer.exe即可運行

打開剛才的heap.bin文件


可以看到下面有三個選項卡,包括可以執(zhí)行的操作和報表
先看第一個Histogram

由于這里是隨便運行的一個工程,并沒有出現(xiàn)內(nèi)存泄漏之類的問題,所以這里看到的都是一些基礎(chǔ)的java類
查看引用

Dominator Tree?可以看到biggest object以及它們所占內(nèi)存的比例

我們一級一級的找,可以找到源文件,然后分析代碼,最終定位到問題之根源
jconsole
可以查看本地的進程,也可以查看遠程主機上的進程

例如:jconsole 192.168.102.16:9105


或者本地

其它

往期推薦
END
若覺得文章對你有幫助,隨手轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動力。
長按二維碼,掃掃關(guān)注哦
?「C語言中文網(wǎng)」官方公眾號,關(guān)注手機閱讀教程??
目前收集的資料包括:?Java,Python,C/C++,Linux,PHP,go,C#,QT,git/svn,人工智能,大數(shù)據(jù),單片機,算法,小程序,易語言,安卓,ios,PPT,軟件教程,前端,軟件測試,簡歷,畢業(yè)設(shè)計,公開課?等分類,資源在不斷更新中...

