Dump文件是进程的内存镜像,可以把程序的执行状态通过调试器保存到dump文件中。主要是用来在系统中出现异常或者崩溃的时候来生成dump文件,然后用调试器进行调试,这样就可以把生产环境中的dmp文件拷贝到自己的开发机上,调试就可以找到程序出错的位置。
1、查看正在运行的容器id
docker ps
2、拿到容器id,进入容器
docker exec -it CONTAINER_ID /bin/bash
或 docker exec -it CONTAINER_ID /bin/sh(上一个命令报错的情况下尝试)
3、在容器内查询进程
ps -ef|grep java
4、生成dump文件(文件名前可以加路径)
jmap -dump:live,format=b,file=m.hprof PID
文件名(m.hprof)
5. JDK1.8以下,使用jdk自带的jvisualvm.exe程序来查看内存溢出文件,在bin目录下
JDK1.8以上,不再集成,可从从官网下载独立版https://visualvm.github.io/index.html,或者安装JDK1.8版本
6. top命令,top是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况
7. 点击file/Open Heap Dump…,打开下载到本地的.hprof文件,打开之后,点击finish,分析过程比较慢需要一段时间。
8. 点击Leak suspects
9. 查看第一个占用内存大的问题的堆栈信息
10. 具体的堆栈信息,此信息跟idea和eclipse的控制台报错信息一致,可自己分析代码问题,也可以看问题详情
文章转载自琢磨先生DataBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。