OutOfMemoryError异常:在java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能

Java堆溢出:
Java堆用于存储对象实例,只要不断的创建对象,并且保证GCRoots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量达到最大堆的容量限制后就会产生内存溢出异常。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

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 {

}
}

深入理解jvm jdk1,7(11) 随笔 第1张

-Xms20M:堆的最小空间   -Xmx20M:堆的最大空间    -Xms 和-Xmx 相等不可扩展
-XX:+HeapDumpOnOutOfMemoryError:可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便是否分析。
XX:HeapDumpPath:指定生成Dump文件路径,如果不知道 默认当前路径(项目的根目录)。

运行结果:

深入理解jvm jdk1,7(11) 随笔 第2张

内存映像分析: https://blog.csdn.net/jin_kwok/article/details/80326088

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄