堆转储文件(heap dump):是JVM 的某个时间点、Java 进程的内存快照。里面包含了当时内存中还没有被 full GC 回收的所有对象和类信息。
jmap -dump:format=b,file=<filename.hprof> <pid>
这将生成一个hprof后缀的文件,其中:
JVM 中配置如下
-XX:+HeapDumpOnOutOfMemoryError
当内存溢出时就会记录异常到堆转储文件
可以使用 jdk 自带的VisualVM工具来进行分析(jdk高于1.8或1.8晚期的 jdk 已经没有自带了,可以去 VisualVM官网下载安装)
1.java安装目录下的bin目录下双击打开 jvisualvm.exe
2.选择文件点击装入,然后加载要分析的hprof文件
3.选择类,然后对堆内存大小进行排序,双击可以查看具体类型的实例内存占用情况
4.双击具体的实例可以查看该实例的内容和占用的大小,可以选择全部展示或者把该内容保存为一个txt文件