使用jdk自带的VisualVM分析hprof堆转储文件


订阅专栏
一、堆转储文件
堆转储文件(heap dump):是JVM 的某个时间点、Java 进程的内存快照。里面包含了当时内存中还没有被 full GC 回收的所有对象和类信息。

二、手动生成堆转储文件的命令
  jmap -dump:format=b,file=

这将生成一个hprof后缀的文件,其中:

format=b,表示转储为二进制格式。
file 指定转储文件的路径,后缀为 hprof。
pid 表示进程 ID。
三、自动生成堆转储文件
JVM 中配置如下

 -XX:+HeapDumpOnOutOfMemoryError

当内存溢出时就会记录异常到堆转储文件

四、VisualVM分析hprof堆转储文件
可以使用 jdk 自带的VisualVM工具来进行分析(jdk高于1.8或1.8晚期的 jdk 已经没有自带了,可以去 VisualVM官网下载安装)

1.java安装目录下的bin目录下双击打开 jvisualvm.exe

使用jdk自带的VisualVM分析hprof堆转储文件_第1张图片

2.选择文件点击装入,然后加载要分析的hprof文件

使用jdk自带的VisualVM分析hprof堆转储文件_第2张图片

 使用jdk自带的VisualVM分析hprof堆转储文件_第3张图片

 

3.选择类,然后对堆内存大小进行排序,双击可以查看具体类型的实例内存占用情况

使用jdk自带的VisualVM分析hprof堆转储文件_第4张图片
4.双击具体的实例可以查看该实例的内容和占用的大小,可以选择全部展示或者把该内容保存为一个txt文件

 使用jdk自带的VisualVM分析hprof堆转储文件_第5张图片

 

你可能感兴趣的:(Java,java,开发语言)