php代码执行dump文件,使用MAT分析dump文件定位程序问题
一、dump生成
dump可以是内存溢出时让其自动生成,或者手工直接导。配置jvm参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/biapp/m.hprof
手工直接导,PID为进程号
jmap -dump:live,format=b,file=m.hprof PID
二、下载LINUX的MAT
下载后将包传到linux服务器上解压。
MemoryAnalyzer.ini 配置文件可以修改最大的内存,默认1G基本够用了。若文件太大可以临时配8或16G大内存快速解析
三、在linux执行分析命令
执行命令
./ParseHeapDump.sh ./heap/heap12818.bin org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components。
生成的文件会和你的dump文件在一个目录下,这里为了区分,我将dumpwenjian放在新建的heap文件夹下,执行脚本会生成图中文件
./heap/heap12818.bin就是jvm的dump文件,在heap目录下会生成3份.zip结尾的报告和一些m.相关的文件,将生成的相关的文件都下载到windows本地磁盘。
如:
四、打开分析报告
1)使用浏览器
解压缩以.zip结尾的文件,解压后打开每个目录下的index文件
2)使用浏览器打开index.html文件内容,查看分析报告
3)从图中分析看出来
http-8335-3线程某一段时间耗尽内存,于是用这个查询catalina.out文件,找到对应错误地方
原文:https://www.cnblogs.com/changjiye/p/11903896.html
php代码执行dump文件,使用MAT分析dump文件定位程序问题相关推荐
- MAT分析dump文件显示大小比jmap查询结果小
背景 有朋友向我吐槽,她在一台测试机器上调试,使用jmap查看堆内存占用时,发现年轻代+老年代占用的内存,和dump下堆转储文件使用MAT分析显示的内存不一样,百思不得其解.重现现象如下: jmap显 ...
- eclipse mat 分析dump文件,打开文件报错,out of memeory
eclipse mat 分析dump文件,打开文件报错,out of memeory 解决: 1.打开eclipse报out of memeory通用 window-->Preferences- ...
- linux使用MAT分析dump文件
unzip MemoryAnalyzer-1.8.0.20180604-linux.gtk.x86_64.zip 修改MAT的内存大小, 注意这个大小要根据你dump文件大小来的,如果dump文件是5 ...
- mat分析dump分析_MAT从入门到精通(一)
尽管JVM提供了自动内存管理的机制,试图降低程序员的开发门槛,确实也实现了这一目标,在日常开发中,我们一般都不需要关心对象的内存释放.JVM大部分都是使用trace算法来判断一个对象是否该被回收,那么 ...
- jvm mat分析dump文件
jvm调优中,经常使用dump来分析是否存在大对象导致频繁full gc,以下为使用步骤: 一.获得服务进程 二.生成dump文件 jmap -dump:format=b,file=xxx.dump ...
- mat分析dump分析_使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一)
来源: https://sourl.cn/ggYpYX 前言 Eclipse Memory Analyzer Tool(MAT)是一个强大的基于Eclipse的内存分析工具,可以帮助我们找到内存泄露 ...
- Spring Data REST 远程代码执行漏洞(CVE-2017-8046)分析与复现
前言 2009年9月Spring 3.0 RC1发布后,Spring就引入了SpEL(Spring Expression Language).对于开发者而言,引入新的工具显然是令人兴奋的,但是对于运维 ...
- 如何在程序中生成崩溃转储dump文件以及如何分析dump
关于更详细的内容,如果有兴趣,可以访问下面的视频 https://edu.csdn.net/course/detail/28915 程序崩溃的时候如何生成dump文件 话不多说,直接上代码,下面的程序 ...
- python代码执行过程记录_[原创]IDAPython+OdbgScript动态获取程序执行流程
题记: 最近知道了有一种方法,可以获取到程序的执行流程,具体做法是先获取程序中每一个函数的地址,在这些地址上设置断点,然后让程序运行起来,hook调试器,断点中断时,不要停下来继续执行,并记录命中的断 ...
最新文章
- Python相对、绝对导入浅析
- layui给select下拉框赋值
- columnproperty server sql_获取SQL Server表字段的各种属性
- 这不是商业互吹,是学习的宝藏
- 常识知识在AI不同领域应用的最新研究进展
- 数据结构实验之栈:行编辑器
- 详解MessageBox(),MsgBox函数的正确使用
- 太阳光轨迹软件_飞时达日照分析软件-FastSUN(日照分析软件)下载 v12.0中文版--pc6下载站...
- 前中后序遍历的递归与非递归算法,层序遍历
- Linux 中文文件名乱码解决 FTP文件名乱码
- Detours的使用
- 100%解决GitHub打不开或者打开慢
- SSH超市进销存管理系统
- 帝国CMS Table '***.phome_ecms_news_data_' doesn't exist
- 黑鲨手机计算机科学技术器,黑鲨4Pro将PC的SSD存储科技带到手机端,真技术革命还假营销噱头?...
- 我的世界手机有php的开服器下载地址,我的世界手机版怎么联机 PE手机版开服教程...
- app间共享(交互)方法
- mac上使用qt,进行输入法的开发
- Pygame实战之外星人入侵NO.11——设置开始按钮
- U.S. zip code