在Java中,生成dump文件通常指的是生成Java堆转储(Heap Dump)文件,这是一种用于分析和调试Java应用程序内存使用情况的手段。Java堆转储文件包含了Java虚拟机(JVM)在某个时间点的内存快照,包括所有的对象和它们的引用关系。这对于分析内存泄漏、性能调优等场景非常有用。生成Dump文件有两种方式,一种是自动生成;另外一种是手动生成
生成Dump文件
自动生成
java启动命令里添加这行指令
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logdir/tonghuan-org
手动生成
发生内存溢出时,如果没有配置自动生成,可以手动生成堆转储日志
jmap -dump:live,format=b,file=heapdump.hprof 23990
如何分析
一般Dump文件都会比较大,可以手动压缩一下,然后下载到本地,然后使用MAT工具导入后分析
# 压缩指令
tar -zcvf dump.tgz 2025-02-17-19-27-07heapdump.hprof
常见内存溢出原因
- 死循环
- 处理大文件(例如大图片执行压缩等)