一、用 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