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能做的都可以做到
能用图形查看的就用图形方式查看,不能的就用文字形式代替。