常见的 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
线程数超过系统限制。减少线程数或调大系统限制。