OutOfMemoryError异常:在java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能
Java堆溢出:
Java堆用于存储对象实例,只要不断的创建对象,并且保证GCRoots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量达到最大堆的容量限制后就会产生内存溢出异常。
public class Test { /** * -Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError * * @param args */ public static void main(String[] args) { List<OOMObject> list = new ArrayList<>(); List<OOMObject1> list1 = new ArrayList<>(); int i = 0; while (i<10) { list1.add(new OOMObject1()); i++; } while (true) { list.add(new OOMObject()); } } static class OOMObject { } static class OOMObject1 { }}
-Xms20M:堆的最小空间 -Xmx20M:堆的最大空间 -Xms 和-Xmx 相等不可扩展-XX:+HeapDumpOnOutOfMemoryError:可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便是否分析。XX:HeapDumpPath:指定生成Dump文件路径,如果不知道 默认当前路径(项目的根目录)。运行结果:
内存映像分析: https://blog.csdn.net/jin_kwok/article/details/80326088
来源:https://www.cnblogs.com/myDreamWillCometrue/p/10871557.html