java Dump文件分析

前言

dump文件是java虚拟机内存在某一时间点的快照文件,一般是.hprof文件,下面自己模拟一下本地内存溢出,生成dump文件,然后通过mat工具分析的过程。

配置虚拟机参数

要想本地模拟oom异常,那么建议将堆内存设置的小一点,那样容易触发

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录} -Xms20m -Xmx20m

-XX:+HeapDumpOnOutOfMemoryError表示jvm发生oom异常时,自动生成dump文件,文件格式一般是:java_pid20804.hprof ,其中20804是java进程id

-XX:HeapDumpPath=${目录},表示生成dump文件的目录,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof,此步骤实验出了点问题,暂时跳过

-Xms:表示给jvm分配的初始化堆内存

-Xmx:表示最大堆内存

模拟oom异常的程序

public class Test1 {

public static void main(String[] args) {

List personList = new ArrayList<>();

while (true){

Person person = new Person();

person.setDate(new Date());

person.setAge(20);

person.setName("test");

personList.add(person);

}

}

}

很明显,一直创建Person对象,却又无法释放,很快就内存溢出了。

java.lang.OutOfMemoryError: GC overhead limit exceeded

Dumping heap to java_pid21892.hprof ...

Heap dump file created [33907612 bytes in 0.152 secs]

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded

at Test1.main(Test1.java:15)

生成的文件名称是java_pid21892.hprof,在项目的根目录下面,文件大小33.9M

MAT工具分析dump文件

预览

预览界面,能清楚的看到整个堆总内存18.7M,但是有18.3M的内存被一个类的对象占用了

功能介绍

Histogram柱状图:以class类的维度展示每个class类的实例存在的个数、 占用的 [Shallow内存] 和 [Retained内存] 大小,可以分别排序显示,从图中看到,Person类的实例占用内存最大,而它就是没有回收引起内存溢出的对象

Dominator Tree支配树:该视图以实例对象的维度展示当前堆内存中Retained Heap占用最大的对象,以及依赖这些对象存活的对象的树状结构

展开会展示下一层子节点,可以这么理解:父节点引用了子节点,子节点没有被回收,所以父节点也没法被回收

Thread Overview::可以看到线程栈/线程对象信息

把线程进行一个排序,同样能看到引起内存溢出的是最上面线程里面的Person对象

可以选择展示什么样的报告信息,我们最开始打开dump文件时,会弹出一个窗口让我们选择,如果选错了这里可以重新选择

这里的功能比较强大,主要用来分析GC引用关系,每个对象到GCRoot的引用,可以在柱状图或者支配树界面里选择可疑对象进行分析,比较常用的两个是:Path to GC ROOTS和Merge Shortest Paths to GC Roots,当然选中对象双击,也能进入到这样的界面

Group分组功能:在 Histogram视图 和 Domiantor Tree视图时可操作,即以什么样的维度展示

将分析报告以什么样的格式导出,可选的有html、csv、txt。便于在团队合作分析dump文件时,无需将庞大的dump文件拷贝过去,只需要生成以上格式的文件,就能很方便的转移。

总结

以上用作笔记,方便下次本人查阅为主。

java模拟内存溢出并分析_本地模拟内存溢出并分析Dump文件相关推荐

  1. IBM内存分析工具JCA在windows环境下打开dump文件报错问题:Cannot find any thread dumps

    问题描述:IBM内存分析工具JCA在windows环境下打开dump文件报错问题:Cannot find any thread dumps 原因:dump文件编码格式问题 解决:修改dump.txt文 ...

  2. jmap 文件解析_干货分享丨jvm系列:dump文件深度分析

    摘要:java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因.那么dump文件的内容是什么样的呢? JVM ...

  3. 直接内存与元空间_深入浅出 JVM 内存管理

    Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗? 可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC算法 以及年轻代和老年代各自特点等等.1 ...

  4. python电视剧口碑分析_小案例(七):口碑分析(python)

    微信公众号:机器学习养成记 搜索添加微信公众号:chenchenwings <菜鸟侦探挑战数学分析>小案例,python实现第七弹 案件回顾 商业街口碑分析 1,顾客在网络上会发表对商品或 ...

  5. 小红书用户画像分析_用户画像,该怎么分析?

    有同学问:陈老师,我领导让我做用户画像分析,可是我做了一大堆数据,却被批:也没分析什么东西啊?该咋办?今天系统解答一下. 用户画像分析的错误姿势1.限于数据,动不敢动.一提用户画像,很多人脑海里立刻蹦 ...

  6. python 生存分析_用python教程进行生存分析何时何地

    python 生存分析 机器学习 , 编程 , 统计 (Machine Learning, Programming, Statistics) Author(s): Pratik Shukla 作者:P ...

  7. 8g内存学习计算机专业够吗,现在电脑内存一般多大_现在电脑内存8个g够吗

    2016-12-13 13:45:12 现在主流的配置是1G,512M的也很多.电脑主板上一般都有两个内存插槽,也就是可以同时插两个内存条.一般的主板最大支持2G到4G的最大内存.超过这个数量,主板是 ...

  8. 电商 竞品分析_电商平台竞品分析报告.docx

    Planning scheme 电商平台竞品分析报告 电商平台竞品分析报告 电商平台竞品分析报告 V1.0 2018-3-18 状态 : [ √ ] 草稿 [ ] 修改中 [ ] 定稿 文件标签: 竞 ...

  9. 16g电脑内存有什么好处_电脑16g内存和8g内存区别多大

    展开全部 16g内存和8g内存的一般情况下差别不大,特殊使用场景下有着较大差距,32313133353236313431303231363533e78988e69d8331333433626561具体 ...

最新文章

  1. c语言实现数码管显示qq号,各位大神,如何用C语言实现在数码管上实现1234同时亮...
  2. 每日一皮:单身狗的悲哀...
  3. 设计模式---读书笔记
  4. Outlook通过RPC/RPC Over HTTPS访问Exchange邮箱
  5. nodejs连接redis,redis服务器的地址格式应该怎么写
  6. win7重装系统后设置Python2.7环境
  7. Win7system登录打开计算机,Windows7系统system文件丢失导致开机黑屏如何解决
  8. java多张图片合成一张_1分钟学会“全景照片”拍摄技巧,从单反拍摄到PS合成,收藏备用...
  9. 红橙Darren视频笔记 自己捕获异常并保存到本地
  10. php项目电影院售票管理系统,电影院售票管理系统
  11. [转]抛弃jQuery,使用原生JavaScript
  12. ce修改面板属性_鬼谷八荒ce教程 教你如何修改属性+灵石+物品+时间等方法
  13. pdf 编辑器 linux
  14. 计算机CPU的时钟频率主要,cpu时钟频率计算公式_CPU频率计算方法详解
  15. 最新版校园招聘进大厂系列----------(2)美团篇 -----未完待续
  16. 使用QT+webassembly构建在线报表设计器
  17. Hadoop 中的面试题
  18. Java源码 SpringMVC Mybatis Shiro Bootstrap Rest Webservice
  19. 网站html漂浮代码大全,网页漂浮窗口代码
  20. 微信小程序--解密用户信息

热门文章

  1. 在线图片批量压缩工具
  2. 白杨流量汇线下聚会品茶聊流量,搞流量的核心是什么?
  3. 微信小程序多次跳转后不能点_微信小程序运营需要先知道它的规则
  4. 升学教育过程中:关于收费、退费的规定
  5. 慕尼黑工业大学开源含四季的数据集:用于自动驾驶的视觉长期定位
  6. Android利用ffmpeg压缩视频
  7. 微信登入,获取用户信息
  8. Windows无法安装驱动原因总结
  9. DDN - Digital Data Network
  10. 【图像处理】获取图片像素点