dump文件介绍

Dump文件是进程或系统在给定时间的快照,例如当进程崩溃或进程出现其他问题时,甚至在任何时候,我们都可以使用工具备份系统或进程的内存以进行调试和分析。Dump文件包含模块信息、线程信息、堆栈调用信息、异常信息等。程序的执行状态可以通过调试器保存到Dump文件中。

操作流程

  1. 生成dump文件
  2. 分析dump文件

dump文件生成方式

  1. 项目出故障时生成
    java项目启动参数配置上以下参数,出故障时会生成dump文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/xxx项目名/logs
  1. 项目正常运行时生成
    通过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文件的分析工具

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

  2. 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下