1563

java堆内存分析实操 | dump文件

dump文件介绍

Dump文件是进程或系统在给定时间的快照,

例如当进程崩溃或进程出现其他问题时,

甚至在任何时候,我们都可以使用工具备份系统或进程的内存以进行调试和分析。

Dump文件包含模块信息、线程信息、堆栈调用信息、异常信息等。

程序的执行状态可以通过调试器保存到Dump文件中。

操作流程

生成dump文件分析dump文件

dump文件生成方式

项目出故障时生成 java项目启动参数配置上以下参数,出故障时会生成dump文件

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/xxx项目名/logs

项目正常运行时生成 通过jps查到目标进程号,再通过jmap命令生成

-- 24336是进程号, dumpfile是导出的文件的命名

jmap -dump:format=b,file=/home/log/dumpfile.hprof 24336

注意事项: 1.生成dump文件可能会导致stop the world, 谨慎使用 2.dump文件貌似比较大(win下只运行项目但没有任何调用量,导出的文件也400多兆) 3.碰到jps等命令用不了的话,先检查下是否有把jdk的bin目录配置到环境变量Path参数中 4.dump文件的后缀:.hprof

dump文件的分析工具

jdk的bin目录下自带的工具jvisualvm.exe

eclipse的MAT工具 下载地址:https://eclipse.dev/mat/previousReleases.php

工具对比: 3. MAT界面有报表更友好,visualVM是JDK自带的更方便 4. MAT下载时需要根据JDK版本号,机器64位或32位选择对应版本,可能需要到.ini配置文件指定JDK的版本。图中选中的是64位的

相关命令

jps jps命令描述

jps 是 Java Process Status Tool 的简称,

它的作用是为了列出所有正在运行中的 Java 虚拟机进程

每一个 Java 程序在启动的时候都会为之创建一个 Jvm 实例,通过 jps 可以查看这些进程的相关信息

jps 是 Jdk 提供的一个工具,它安装在 JAVA_HOME/bin 下