文章目录
- 堆内存溢出
- 方法区(运行时常量池)和元空间溢出
- 直接内存溢出
- 栈内存溢出
什么时候会抛出OutOfMemery异常呢?初看好像挺简单的,其实深究起来考察的是对整个JVM的了解,而这个问题从网上可以翻到一些乱七八糟的答案,其实在总结下来基本上4个场景可以概括下来。
堆内存溢出
堆内存溢出太常见,大部分人都应该能想得到这一点,堆内存用来存储对象实例,我们只要不停的创建对象,并且保证GC Roots和对象之间有可达路径避免垃圾回收,那么在对象数量超过最大堆的大小限制后很快就能出现这个异常。
写一段代码测试一下,设置堆内存大小2M。
代码语言:javascript复制public class HeapOOM {
public static void