linux环境下导出项目的堆栈dump文件

Posted 风某人~Wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux环境下导出项目的堆栈dump文件相关的知识,希望对你有一定的参考价值。

在生产环境中,我们项目有时候会出现OOM问题,比如说堆内存溢出,频繁GC等问题,如果我们需要解决问题的情况下,可能就需要导出项目的堆栈信息,对其堆栈内存进行分析。

接下来直接开始动手

我是使用自己的服务器上面启动了一个nacos注册中心,这个也是java写的一个项目,就用这个来做示范

进入服务器,先用jps查询运行中的java程序和进程id

jps

 上面图可以看出,我们现在有一个pid 为5145进程号的nacos服务端在运行,我们接下来可以把这个项目的堆栈信息导出来


jmap -dump:format=b,file=wanfile.dump 5145
//或者下面这个,都行。live的意思是导出存活对象,其实就是在导出之前执行一次fgc
jmap -dump:live,format=b,file=wanfile.dump 5145

执行完以后,就会发现,在当前目录下会生成一个文件,我这里是为你们演示了两次,所以有两个文件,这个都不重要

 我们通过命令,把这个文件下载到本地桌面

sz wanfile2.dump

下载到本地以后,我们可以通过jdk里面自带的jvm分析工具来分析文件中的对象信息,我们下面演示用jvisualvm 来分析dump文件

先找到jdk中jvisualvm.exe 程序,并双击打开

打开以后是这样的

 选择,文件-->  点击装入,选择文件类型为 *.dump 文件

 点击打开以后,就会出现一些 基本信息

 点击类,可以显示项目堆中存在的类信息,可以对堆中类信息进行分析,

 还可以使用 oql 来查询类对象信息,和sql语句语法差不多

 以上就是全部内容了,欢迎点赞收藏!

以上是关于linux环境下导出项目的堆栈dump文件的主要内容,如果未能解决你的问题,请参考以下文章

linux环境下导出项目的堆栈dump文件

Java中如何获取到线程dump文件

关于Linux的core dump那些事

core dump 配置

Linux服务器下Tomcat堆栈信息dump及问题排查

「Python实用秘技03」导出项目的极简环境依赖