(一)深入java虚拟机之内存溢出与分析

时间:2024-11-21 21:04:19

一、内存溢出程序

public class Test {
public static void main(String[] args) {
List<User> userList=new ArrayList<User>();
while(true) {
userList.add(new User());
}
}
}
public class User implements Serializable {

    /**
*
*/
private static final long serialVersionUID = 1L; private Integer id;
private String userName;
private String pwd;
//省略getset方法
  • 当程序运行起来后一段时间内存就会溢出。

二、查看内存溢出情况

  2.1  安装内存分析工具

(一)深入java虚拟机之内存溢出与分析

  2.2  运行参数配置

Run as-->Run Configurations-->Arguments-->VM arguments:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError,配置20M当做内存溢出上限,方便测试,具体大小大家可以自己控制。-XX:+HeapDumpOnOutOfMemoryError 配置后,当存溢出就会生成文件。

(一)深入java虚拟机之内存溢出与分析

  2.3  运行程序

(一)深入java虚拟机之内存溢出与分析

  • 刷新工程,生成文件

(一)深入java虚拟机之内存溢出与分析

  • 双击打开

(一)深入java虚拟机之内存溢出与分析

(一)深入java虚拟机之内存溢出与分析

如上图可知,是main线程的ArrayList内存溢出