哪些场景会产生OOM?怎么解决?

2023-03-10 08:49:39 浏览数 (1)

文章目录

  • 堆内存溢出
  • 方法区(运行时常量池)和元空间溢出
  • 直接内存溢出
  • 栈内存溢出

什么时候会抛出OutOfMemery异常呢?初看好像挺简单的,其实深究起来考察的是对整个JVM的了解,而这个问题从网上可以翻到一些乱七八糟的答案,其实在总结下来基本上4个场景可以概括下来。

堆内存溢出

堆内存溢出太常见,大部分人都应该能想得到这一点,堆内存用来存储对象实例,我们只要不停的创建对象,并且保证GC Roots和对象之间有可达路径避免垃圾回收,那么在对象数量超过最大堆的大小限制后很快就能出现这个异常。

写一段代码测试一下,设置堆内存大小2M。

代码语言:javascript复制
public class HeapOOM {
   
    public static void 

0 人点赞