所谓OOM是OutOfMemory的简写
当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个error
最常见的三种OOM:
-
Permanent Generation space(永久保存区域)
- java永久代溢出,即方法区溢出
- -XX:PermSize -XX:MaxPermSize 调整
-
Heap space(堆区域)
- java堆内存溢出,此种情况最常见,一般由于内存泄露或者堆的大小设置不当引起。
- -Xms,-Xmx调整
-
Java Stacks(虚拟机栈)
- 更常见的是java.lang.StackOverflowError 不会抛OOM error,但也是比较常见的Java内存溢出
执行以下代码会出现java.lang.OutOfMemoryError : Java heap space
显然是堆区OOM了。
public static void main(String[