JDK自帶了不少查看和管理內存的工具:
- JMAP
jmap -heap [pid] : 文字形式查看JVM中堆內存,非堆內存等大小情況
jmap -histo [pid] : 文字形式查看各種類占內存大小情況,但粒度只去到[C這種
jmap -dump:format=b,file=文件名 [pid] : DUMP出內存快照,給其他工具分析內存提供依據 - JHAT
jhat -J-Xms1024M 文件名:分析DUMP文件,并將結果以http://ip:7000向外提供,可具體到哪些對象 - MAT
由于jhat分析大文件時速度慢,因此引入Eclipse Memory Analyzer,速度和功能強很多 - JSTAT
jstat -gcutil [pid]:查看FULL GC的次數和消耗時間,統計 - JCONSOLE
以圖形方式查看內存、線程、類、MBEAN等信息 - JVISUALVM
是JCONSOLE的升級版,可查看內存、線程、各對象占內存的大小,JMAP/JHAT能做的都可以做到
能用圖形查看的就用圖形方式查看,不能的就用文字形式代替。