Java本地模拟内存溢出及生成dump文件

  • 本地模拟内存溢出
1 package com.cnhis.test.dump;  
 2   
 3 import java.util.ArrayList;  
 4 import java.util.List;  
 5   
 6 /** 
 7  * OutOfMemoryError内存溢出模拟测试 
 8  */  
 9 public class OOMTest {  
10   
11     public static void main(String[] args) {  
12         List<String> list = new ArrayList<>();  
13         while (true){  
14             list.add("test");  
15         }  
16     }  
17 }
  •  idea设置VM参数

第一步:Edit Configurations

导出 dump文件 java java dump文件生成_List

 

 

 

 第二步:设置参数

导出 dump文件 java java dump文件生成_内存溢出_02

 第三步:dump文件生成,可以使用jstack、jmap、MAT等工具分析

导出 dump文件 java java dump文件生成_内存溢出_03

 

 

 注意:上面指定的dump输出文件夹“D:\dumpTest”必须存在,idea不会去创建

  • 参数说明

-Xms:表示初始化堆内存

-Xmx:表示最大堆内存

-XX:+HeapDumpOnOutOfMemoryError 表示jvm发生oom异常时,自动生成dump文件

-XX:HeapDumpPath= 表示生成dump文件的存放目录