jvm内存快照dump文件太大,怎么分析
1、场景
通常,使用eclipse的mat图形化工具打开dump的时候都会内存溢出.

对于比较小的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
地址:http://www.eclipse.org/mat/downloads.php
在linux服务器执行命令 uname –m查看版本

下载对应的版本

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

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本地磁盘。
如:

5、打开分析报告
1)使用浏览器
解压缩以.zip结尾的文件,解压后

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

查看Class Histogram一项

发现其中一个类对象占用了7个G,这里的Heap单位都是Byte,自行换算。
Shallow Heap 既对象本身的大小
Retained Heap 对象自身加起直接或间接引用的大小
2)使用eclipse的mat工具
Eclipse需要按照mat工具,安装步骤可以百度,或者参考
https://jingyan.baidu.com/article/cb5d61053562ed005c2fe022.html
如果直接打开dump文件还是会内存溢出,所以可以使用eclipse打开分析报告即可。
使用eclipse-File-Open File打开dump文件,如下:

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

点击Next,出现如下界面

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

得到相同的结果

jvm内存快照dump文件太大,怎么分析的更多相关文章
- JVM调优 dump文件怎么生成和分析
1.获取JVM的dump文件的两种方式 1. JVM启动时增加两个参数: #出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError #生成堆文件地址: - ...
- beyond compare解决特殊字符无法输出、多sheet页无法对比以及文件太大超出系统内存问题的Excel转txt脚本
beyond compare解决特殊字符无法输出.多sheet页无法对比以及文件太大超出系统内存问题的Excel转txt脚本 ' XLS_to_CSV.vbs ' ' Converts an Exce ...
- Sqlserver2005日志文件太大,使其减小的方法
Sqlserver2005日志文件太大,使其减小的方法: 运行下面的三行 dbName为数据库名: backup log dbNamewith NO_LOG backup log dbNamewith ...
- Mysql文件太大导入失败解决办法总结
Mysql文件太大导入失败解决办法总结 在使用phpmyadmin导入数据库的时候可能会碰到由于数据库文件太大而无法导入的问题! 英文提示如下:File exceeds the maximum all ...
- Oracle - crfclust.bdb文件太大
今天在检查oracle rac集群时,突然才发现服务器的根目录下面占用了很多空间,照道理不应该出现这种情况,初步猜想可能是哪个日志或跟踪文件太大导致.切换到跟目录,使用du -sh *来一层一层查看到 ...
- Sql 脚本文件太大 还原数据库
sql脚本太大直接在数据库中执行会提示内存不足,我们看生成的脚本文件会发现每隔100条会有一个GO来分隔,这就好说了 在我将数据库的结构连同数据生成一个脚本文件db.sql 后,想在另外的电脑上恢复数 ...
- 生成的API分析文件太大。我们无法在交付前验证您的API使用信息。这只是通知信息。
这次使用了APICloud平台来开发移动APP, 发布的时候在api控制台云编译成ipa后,这次使用apple提供的Application Loader工具提交apa文件到iTunes上去,提交结束的 ...
- ORACLE 监听日志文件太大停止写监听日志引起数据库连接不上问题
生产库监听日志文件太大(达到4G多),发现oracle停止写监听日志,检查参数log_file,log_directory,log_status 均正常,数据库运行也正常. 经确认确实为监听日志过大引 ...
- apache日志文件太大的问题
apache日志文件太大的问题 处理Apache日志的两种方法 rotatelogs 是 Apache 2.2 中自带的管道日志程序 rotatelogs [ -l ] logfile [ rotat ...
随机推荐
- ubuntu 使用dpkg手动安装deb包时发生循环依赖的解决办法
将循环依赖的所有包放到同一个命令行里一起安装,如: sudo dpkg -i libnss3-nssdb_3.28.4-0ubuntu0.14.04.4_all.deb libnss3_3.28.4- ...
- [js]函数的上级作用域,他的上级作用域就是谁,跟函数在哪执行的没什么关系.
函数的上级作用域,他的上级作用域就是谁,跟函数在哪执行的没什么关系. <script> //如何查找上级作用域? //看函数在哪个作用域下定义的,他的上级作用域就是谁. 跟函数在哪执行的没 ...
- linux 单次定时任务
使用at =======查看当前任务========= at -l 或者atq =======查看任务执行什么===== at -c =======配置任务========= at 02:00 ...
- linux iptables详解(转)
概述 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成 ...
- The All-purpose Zero (最长公共子序列)
题意:求最长公共子序列,但是有个辅助条件,那就是如果那个值为0,那么他可以更换为任意值. 思路:假设现在只剩下没有0的序列是不是就很好求了?那么我们的想法就是看有没有办法将0往最左端或者最有端移动,显 ...
- hashlib、hmac
#hashlib import hashlib#md5m = hashlib.md5()m.update(b"Hello")print(m.hexdigest()) #hexdig ...
- function的toString方法
javascript的创建多行字符串的除了平时常见的”“+ 反斜杠\ 还有ES6的` ` 在js51上发现一个很有意思的方法 function heredoc(fn) { return fn.toSt ...
- 【java】J2EE、J2SE和J2ME的区别
本文向大家简单介绍一下J2EE.J2SE.J2ME概念及区别,J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库. Java2平台包括:标准版(J2SE) ...
- 王之泰201771010131《面向对象程序设计(java)》第九周学习总结
第一部分:理论知识学习部分 第7章异常.日志.断言和调试 概念:异常.异常类型.异常声明.异常抛出. 异常捕获1.异常处理技术2.断言的概念及使用3.基本的调试技巧 1)异常的概念 a.Java的异常 ...
- i.MX6UL -- PWM用户空间使用方法【转】
本文转载自:https://blog.csdn.net/u014486599/article/details/53010114 i.MX6UL -- PWM用户空间使用方法 开发平台: 珠海鼎芯D51 ...