JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式
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文件的三种方式相关推荐
- java oom dump_JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式
JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...
- Windows下生成dump文件的三种方式
文章目录 前言 一.什么是dump文件? 概述 dump分类 内核模式Dump 用户模式Dump 二.dump生成方式 实现方法 方法一:修改注册表 参数说明 方法二:生动创建转储文件 方法三:通过代 ...
- python生成excel文件的三种方式
在我们做平常工作中都会遇到操作excel,那么今天写一篇,如何通过python操作excel.当然python操作excel的库有很多,比如pandas,xlwt/xlrd,openpyxl等,每个库 ...
- KEIL / MDK生成BIN文件的两种方式
KEIL / MDK生成BIN文件的两种方式 1 KEIL工程配置入口 点击"魔术棒"图标(Option for Target) 在After Build/Rebuild选项卡中, ...
- 生成随机字符串(三种方式)
生成随机字符串(三种方式) 一.org.apache.commons.lang包下有一个RandomStringUtils类,其中有一个randomAlphanumeric(int length)函数 ...
- dump java崩溃自动 不生成_一个宏命令,就可以程序崩溃时生成dump文件
在主程序初始化时加入 DeclareDumpFile(); 创建头文件DumpFile.h, 将下列代码放进文件中 #pragma once #include #include < Dbghel ...
- 如何在SpringWEB项目或者Springboot启动时直接执行业务代码(三种方式)
我的博客原文链接 前言 通常的我们的项目开发中,经常会遇到那种在服务一启动就需要自动执行一些业务代码的情况.比如将数据库中的配置信息或者数据字典之类的缓存到redis,或者在服务启动的时候将一些配置化 ...
- 使用word生成xps文件的两种方式
最近开发中需要用到xps文件,当使用另存为xps以及使用导出xps文件方式生成的xps文件格式与使用微软自带xps打印机的格式不一致,这将导致遍历解析后的xps文档时,需要做的工作不同.(微软这样做的 ...
- C# 生成chart图表的三种方式
在.net中,微软给我们提供了画图类(system.drawing.imaging),在该类中画图的基本功能都有.比如:直线.折线.矩形.多边形.椭圆形.扇形.曲线等等,因此一般的图形都可以直接通过代 ...
最新文章
- mysql分组和where条件查询_【MySQL】:分组查询where和having
- 一文看懂人脸识别(4个特点+4个实现步骤+5个难点+算法发展轨迹)
- 【Android】SlidingMenu属性详解
- andorid手机电脑操作
- c语言基础傅里叶变换,急求:C语言如何实现快速傅里叶变换
- thinkpaidE480office安装文件夹
- COSC 1047 – Winter 2019 – Assignment
- Oracle中CHAR类型不足位数时,用空格自动补足位数
- Docker入门系列(一):目标和安排
- 【特色团队采访】慌呀哩团队,用简洁算法达成高效协作
- 白化(Whitening): PCA白化 ZCA白化
- PDMS二次开发(五)——小试牛刀之细节整理和收尾
- python生成的词云没有图案_Python词云生成
- Qt数据库应用20-csv文件转xls
- 深蓝学院-多传感器融合定位-第3章作业
- 信链可信存证平台CCDP
- python基础(08)——随机模块函数,字符串
- 求立方根函数cbrt
- 【胡侃系列】基于多元回归模型的双十一购物狂欢节天猫商城销售额预测
- android 如何关闭app,android 关闭app程序