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

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  下

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/f9374d127b.html