java 内存快照怎么看_jvm内存快照dump文件太大,怎么分析

1、场景

通常,使用eclipse的mat图形化工具打开dump的时候都会内存溢出.

44769fffe9098d1d895f163ba2336bbf.png

对于比较小的dump,eclipse可以打开,但一旦dump文件太大,eclipse就有点束手无策。

这时候怎么办呢?可以使用linux下的mat,既Memory Analyzer Tools

2、dump生成

dump可以是内存溢出时让其自动生成,或者手工直接导。配置jvm参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/biapp/m.hprof

手工直接导,PID为进程号

jmap -dump:live,format=b,file=m.hprof PID

3、准备工作,下载LINUX的MAT

在linux服务器执行命令 uname –m查看版本

a5f789f0a721be16e401a1c78c23b7a5.png

下载对应的版本

c19763d00031a09e871a9139df128a87.png

下载后将包传到linux服务器上解压。

af2926363870ae814071c12c10ecd44b.png

MemoryAnalyzer.ini 配置文件可以修改最大的内存,默认1G基本够用了。

4、在linux执行分析命令

执行命令

./ParseHeapDump.sh m.hprof  org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components。

m.hprof就是jvm的dump文件,在mat目录下会生成3份.zip结尾的报告和一些m.相关的文件,将生成的m.hprof相关的文件都下载到windows本地磁盘。

如:

1407d6133c70cd777edcfdbcb4590c05.png

5、打开分析报告

1)使用浏览器

解压缩以.zip结尾的文件,解压后

324f5521343f9153ced9178b7f48b304.png

使用浏览器打开index.html文件内容,查看分析报告

c74e35be0b48e0674bd3b89748fecff2.png

查看Class Histogram一项

4cc3b352c3c84363a491dc678f1f26af.png

发现其中一个类对象占用了7个G,这里的Heap单位都是Byte,自行换算。

Shallow Heap 既对象本身的大小

Retained Heap 对象自身加起直接或间接引用的大小

2)使用eclipse的mat工具

Eclipse需要按照mat工具,安装步骤可以百度,或者参考

如果直接打开dump文件还是会内存溢出,所以可以使用eclipse打开分析报告即可。

使用eclipse-File-Open File打开dump文件,如下:

c87638babf9a9eda4f8496eca879cc41.png

会提示错误,点击OK忽略错误,然后选择第三项,重新打开之前的运行报告

894736452c354b25f15fa4ff422f4275.png

点击Next,出现如下界面

fa94fbe5e5d9827697fc014e34ae11cd.png

选择其中的一份报告打开,如m_System_Overview.zip

c248f744a563b5b072cc62d90bd3b493.png

得到相同的结果

1f3fa1bf15c7268e89409e31907b53b1.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第3步 (请先看第2步再看第3步) 新建完spring+springmvc+mybatis项目 需要推送gitee仓库进行管理 巨详细

idea中Terminal终端无法执行GIT命令: touch README.md问题解决 解决方法二: ◆更改路径即可 Git\bin\bash.exe 或 Git\bin\sh.exe 然后重新启动idea即可 ********************88注意:每次更改完成后需要重新启动IDEA****************** 记…

115个Java面试题和答案——终极列表(下)

转载自 115个Java面试题和答案——终极列表(下)第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序&#xff0…

java编译提示错误信息_JAVA编译错误提示缺少“{”

展开全部有点粗心了 我把我修改过的发62616964757a686964616fe58685e5aeb931333335323435给你具体问题:是extends不是extands类Circle拼错Circle构造方法height拼错abstract class Shape{public int width,height;public Shape(int width,int height){this.widthwid…

谈谈这些年前端的变化

我从事web开发工作到现在差不多四年了,前后台都涉及过,近两年两年前端开发为主。我记得11年的时候,我到南京的第一年,加入了一个电商公司,从事PHP开发,那个时候公司里面有一个女孩子,专门从事前…

第2步 安装git 配置git用户 git的安装和项目的建立

安装git 比较简单 在window上是有个 git bash 这个命令集成了一部分window和linux的命令 在任意目录下(一般是项目工程目录下面) 右键点击git bash 进入之后 小写字母 i 进入编辑模式(insert模式出入) [user] nameyjb1091947832(注册…

jsp连接mysql数据库 例子_JSP 连接 MySQL 数据库的例子

一:数据库 1. 正确install mysql 2. mysql -h localhost -u root -p 3. create database shujuku; 4. grant all privileges on shujuku.* to testlocalhost identified by "12345"; 5. use shujuku; 6. create table biao (id int(8) primary key, name…

115个Java面试题和答案——终极列表(上)

转载自 115个Java面试题和答案——终极列表(上)本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力。下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点&…

依赖注入的威力,.NET Core的魅力:解决MVC视图中的中文被html编码的问题

有园友在博问中提了这样一个问题 —— .NET Core 中文等非英文文字html编码输出问题&#xff0c;到我们的 ASP.NET Core 项目中一看&#xff0c;也是同样的问题。 比如下面的Razor视图代码&#xff1a; {ViewBag.Title "代码改变世界"; }<title>ViewBag.Title…

第4步 tomcat配置中文字符集 启动Tomcat  网页乱码

第二部&#xff1a;给页面上添加mate标签 <html> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <head> 然而并没什么效果。于是我就去掉这种无用的操作。换另外一种方案。 第三部&#xff1a;在tomcat的配置中…

自己动手开发编译器(我们的朋友 -- 装配脑袋走了)

编者: 昨天在微信群里得知 我们的朋友--装配脑袋(施凡老师),因白血病离我们而去,自从得病以来,施老师在积极的接受治疗&#xff0c;8.27 得到的消息还是比较让人开心的,大家都在期待着他能够重出江湖。装配脑袋一直在从事一个编译器项目,在博客园的博客里有个系列《自己动手开发…

Java Web开发与实战_Java Web开发技术与实战项目

【实例简介】北大青鸟ACCP6.0 使用JSP/Servlet/Ajax技术开发新闻发布系统第一部分课件以及代码答案1到6章【实例截图】【核心代码】7.《JavaWeb开发技术》└── 7.《JavaWeb开发技术》├── Chapter01│ ├── 01 提供给教员的内容│ │ ├── 01 教学演示案例│ │…

修改Eclipse中项目在Apache Tomcat中的部署路径

转载自 修改Eclipse中项目在Apache Tomcat中的部署路径在Eclipse中配置完服务器后&#xff0c;如果不做任何修改就去部署项目,部署后你会发现,在Apache Tomcat的webapp文件夹下并没有这个项目&#xff0c;那么项目去哪里了呢&#xff1f; 其实项目已经部署到如下默认目录…

微服务意味着分布式系统

Sander Hoogendoorn认为&#xff0c;向微服务迁移就意味着向分布式系统进行迁移&#xff0c;在这里&#xff0c;我们必须要处理延迟、认证与授权、无法到达的消息。通过使用微服务&#xff0c;我们能够将大型系统拆分为更小的组件&#xff0c;从而实现对架构的重新掌控。借助于…

在Eclipse中使用JUnit4进行单元测试(初级篇)

转载自 在Eclipse中使用JUnit4进行单元测试&#xff08;初级篇&#xff09;本文绝大部分内容引自这篇文章&#xff1a;http://www.devx.com/Java/Article/31983/0/page/1我们在编写大型程序的时候&#xff0c;需要写成千上万个方法或函数&#xff0c;这些函数的功能可能很强大…

java包 类 方法_Java中包与包之间方法的调用及其关键字区分(基础)

最近在写应用时&#xff0c;对包与包之间方法的调用不太清楚&#xff0c;专门看视频和网站后整理了这篇文章&#xff0c;希望对刚入门的同志有所帮助&#xff0c;进入主题。首先我们先简单看看Java中private、protected、public和default的主要区别&#xff1a;(看不懂没关系&a…

GitHub开源贡献榜:微软超越Facebook和Google排第一

在新任CEO萨蒂亚纳德拉的领导下&#xff0c;封闭许久的微软已于过去几年在变得更加拥抱开源。根据知名代码协作项目网站GitHub上的最新数据&#xff0c;我们发现微软已经位列开源贡献榜的第一名&#xff08;16419&#xff09;&#xff0c;超过了Facebook&#xff08;15682&…

Eclipse下导入外部jar包的3种方式

转载自 Eclipse下导入外部jar包的3种方式我们在用Eclipse开发程序的时候&#xff0c;经常要用到第三方jar包。引入jar包不是一个小问题&#xff0c;由于jar包位置不清楚&#xff0c;而浪费时间。下面配图说明3种Eclipse引入jar包的方式。1.最常用的普通操作方式:基本步骤式右击…

java速学_5分钟快速入门Java,不看真的可惜了

你好&#xff0c;世界&#xff01;源代码组织方式Java程序由packageclass组成&#xff0c;package对应目录的相对路径&#xff0c;class对应文件&#xff0c;如关于class有如下几点规则&#xff1a;文件的名字必须和class的名字一致(public级别的class名字)。文件必须只包含一个…