深入理解Java虚拟机jvm-Java堆溢出示例OutOfMemoryError: Java heap space

Java堆溢出示例

  • 示例:
  • 虚拟机参数
  • 结果:
  • 原因分析

示例:

import java.util.ArrayList;
import java.util.List;

/**
 * VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
 * Java堆溢出
 * java.lang.OutOfMemoryError: Java heap space
 */
public class Demo1 {
    static class OOMObject {
    }

    public static void main(String[] args) {
        List<OOMObject> list = new ArrayList<>();

        while (true) {
            list.add(new OOMObject());
        }
    }
}

虚拟机参数

-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
解释:

  • -Xms20m:堆最小内存20m
  • -Xmx20m:堆最大内存20m
  • -XX:+HeapDumpOnOutOfMemoryError:会在OutOfMemoryError发生时生成一个堆转储文件

结果:

深入理解Java虚拟机jvm-Java堆溢出示例OutOfMemoryError: Java heap space_第1张图片

原因分析

无限循环创建的对象过多,申请的内存超过了最大限制20m,异常

你可能感兴趣的:(java,jvm,开发语言)