前言
除了程序计数器外,虚拟机内存的其他运行时区域都有发生OutOfMemoryError(OOM)异常的可能;
本文工作分两部分:1.通过代码验证各个运行时区域存储的内容;2.遇到内存溢出异常的时候,如何根据异常的信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢出,以及出现这些异常后该如何处理;
Java堆溢出
堆用来存储对象实例,只有不停地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清楚这些对象,那么在对象数量达到堆的最大容量限制后,就会产生内存溢出异常;