常见的 OOM 有哪些?

JVM 面试题发布于

一、Java heap space

堆内存不足,对象太多或内存泄漏。排查:dump 堆快照,用 MAT 分析大对象/泄漏点。

二、GC overhead limit exceeded

GC 耗时过长(98% 时间用于 GC 且回收不到 2% 内存)。通常是堆太小或内存泄漏。

三、Java.lang.StackOverflowError

栈深度过深,递归没有出口。

四、Metaspace

元空间不足,动态生成类太多(如大量反射、CGLIB)。调大 -XX:MaxMetaspaceSize。

五、Direct buffer memory

堆外内存不足,NIO 用的直接内存超限。

六、unable to create new native thread

线程数超过系统限制。减少线程数或调大系统限制。