JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory
Analyzer(MAT)插件进行堆内存分析。

方法一:

jmap -dump:format=b,file=文件名 [pid]

例如:

jmap -dump:format=b,file=/usr/local/base/02.hprof 12942

方法二:

让JVM在遇到OOM(OutOfMemoryError)时生成Dump文件,需要配置一些信息

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/base

比如:我用eclipse配置一下。如下图所示:

方法三:

使用 jcmd 命令生成 dump 文件

jcmd <pid> GC.heap_dump d:dumpheap.hprof

此方法没有经过博主的测试。

分析:

dump文件可以通过MemoryAnalyzer(MAT)分析查看,可以查看dump时对象数量,内存占用,线程情况等。

我们现在来安装一下eclipse MAT插件

打开Help -> new install software

名字可以随便起,插件地址:http://archive.eclipse.org/ma...

剩下的就不做多的介绍了,安装完成后,我们来使用方法二来营造一个内存溢出的例子:

比如我写的Java内存溢出程序是:

import java.util.ArrayList;
import java.util.List;public class OOM {public static void main(String[] args) {List<Object> list = new ArrayList<>();// 创建n个1M大小的数组,耗尽内存for (int i = 0; i < 10000; i++) {list.add(new byte[1024 * 1024]);}}}

控制台打印:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to /Users/sun/Documents/java_pid31782.hprof ...
Heap dump file created [1943907998 bytes in 5.035 secs]

下边我们切换eclipse视图到 Memory Analysis,点击File -> Open Heap Dump,选择生成的hprof文件,如下图所示

打开完成后,如下所示:圈起来的这三个是常用的分析方式

现在我们点击 Leak Suspects 来看一下

点击 Histogram 来看一下

byte 数组创建的很大,溢出的问题一目了然

JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式相关推荐

  1. java oom dump_JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  2. Windows下生成dump文件的三种方式

    文章目录 前言 一.什么是dump文件? 概述 dump分类 内核模式Dump 用户模式Dump 二.dump生成方式 实现方法 方法一:修改注册表 参数说明 方法二:生动创建转储文件 方法三:通过代 ...

  3. python生成excel文件的三种方式

    在我们做平常工作中都会遇到操作excel,那么今天写一篇,如何通过python操作excel.当然python操作excel的库有很多,比如pandas,xlwt/xlrd,openpyxl等,每个库 ...

  4. KEIL / MDK生成BIN文件的两种方式

    KEIL / MDK生成BIN文件的两种方式 1 KEIL工程配置入口 点击"魔术棒"图标(Option for Target) 在After Build/Rebuild选项卡中, ...

  5. 生成随机字符串(三种方式)

    生成随机字符串(三种方式) 一.org.apache.commons.lang包下有一个RandomStringUtils类,其中有一个randomAlphanumeric(int length)函数 ...

  6. dump java崩溃自动 不生成_一个宏命令,就可以程序崩溃时生成dump文件

    在主程序初始化时加入 DeclareDumpFile(); 创建头文件DumpFile.h, 将下列代码放进文件中 #pragma once #include #include < Dbghel ...

  7. 如何在SpringWEB项目或者Springboot启动时直接执行业务代码(三种方式)

    我的博客原文链接 前言 通常的我们的项目开发中,经常会遇到那种在服务一启动就需要自动执行一些业务代码的情况.比如将数据库中的配置信息或者数据字典之类的缓存到redis,或者在服务启动的时候将一些配置化 ...

  8. 使用word生成xps文件的两种方式

    最近开发中需要用到xps文件,当使用另存为xps以及使用导出xps文件方式生成的xps文件格式与使用微软自带xps打印机的格式不一致,这将导致遍历解析后的xps文档时,需要做的工作不同.(微软这样做的 ...

  9. C# 生成chart图表的三种方式

    在.net中,微软给我们提供了画图类(system.drawing.imaging),在该类中画图的基本功能都有.比如:直线.折线.矩形.多边形.椭圆形.扇形.曲线等等,因此一般的图形都可以直接通过代 ...

最新文章

  1. mysql分组和where条件查询_【MySQL】:分组查询where和having
  2. 一文看懂人脸识别(4个特点+4个实现步骤+5个难点+算法发展轨迹)
  3. 【Android】SlidingMenu属性详解
  4. andorid手机电脑操作
  5. c语言基础傅里叶变换,急求:C语言如何实现快速傅里叶变换
  6. thinkpaidE480office安装文件夹
  7. COSC 1047 – Winter 2019 – Assignment
  8. Oracle中CHAR类型不足位数时,用空格自动补足位数
  9. Docker入门系列(一):目标和安排
  10. 【特色团队采访】慌呀哩团队,用简洁算法达成高效协作
  11. 白化(Whitening): PCA白化 ZCA白化
  12. PDMS二次开发(五)——小试牛刀之细节整理和收尾
  13. python生成的词云没有图案_Python词云生成
  14. Qt数据库应用20-csv文件转xls
  15. 深蓝学院-多传感器融合定位-第3章作业
  16. 信链可信存证平台CCDP
  17. python基础(08)——随机模块函数,字符串
  18. 求立方根函数cbrt
  19. 【胡侃系列】基于多元回归模型的双十一购物狂欢节天猫商城销售额预测
  20. android 如何关闭app,android 关闭app程序

热门文章

  1. Java 复制一个文件到另外一个目录下
  2. spark SQL学习(综合案例-日志分析)
  3. Java: 复制文件最快、高效率的方法
  4. NYOJ 30 Gone Fishing JAVA+解析
  5. IE问题解决方法汇总
  6. ansible-playbook-常用
  7. C# 8中的默认接口方法
  8. SSRS报表连接超时的问题
  9. 如何在windows server 2008 AD中禁用USB端口(转庐阳侠们博客)
  10. Varnish 4.0.3详细配置