一、用 jmap(Memory Map for Java)查看堆内存信息
1.查看堆内存信息
命令:jmap -histo pid
解析:可以打印出当前堆中所有每个类的实例数量和内存占用
结果:
如下,class name 是每个类的类名([B 是 byte 类型,[C是 char 类型,[I 是 int 类型),bytes 是这个类的所有示例占用内存大小,instances 是这个类的实例数量:
2.使用jmap-dump 生成heap dump 文件
执行 jmap -dump 可以转储堆内存快照到指定文件
命令格式:jmap -dump:format=b,file=xxx.bin <pid>,就生成了 xxx.bin 的dump文件。
其中pid是JVM进程的id,xxx.bin是生成的heap dump文件,在执行命令的目录下面
如果要使用Eclipse Memory Analyzer来分析则文件的后缀要为hprof。
示例:jmap -dump:format=b,file=xxx.bin 1
jmap -dump:format=b,file=heap.hprof 1
jmap -dump:live,format=b,file=heap.bin <pid> 将当前的存活对象dump到文件,此时会触发FullGC