分析JVM内存溢出的hprof

导出

手动导出内存快照

1
jmap -dump:format=b,file=./java_pid6902.hprof 6902

自动导出

添加脚本命令

1
2
current=`date '+%s'`
java -Xmx1G -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump/ -Xloggc:gclog.log-${current} -XX:+UseGCLogFileRotation -XX:GCLogFileSize=20M -XX:NumberOfGCLogFiles=50 -jar app.jar

更多参考JVM参数

jhat 查看

打开 hprof

1
2
# 端口默认 7000 -J-Xmx512m
jhat -port 7000 -J-Xmx512m java_pid14827.hprof
  • 使用-J-Xmx512m来设置最大堆大小为512M

jvisualvm 查看

直接载入文件,选择文件类型 .hprof

image-20220524103324385

参考:

IBM:使用 HPROF 概要文件分析器

IBM:HPROF 输出文件的说明

HPROF: A Heap/CPU Profiling Tool

深入浅出JProfiler

使用JProfiler进行内存分析

Introduction To JProfiler

本文地址: https://github.com/maxzhao-it/blog/post/f9aa9996/