简单分析各种JAVA内存溢出(OOM)

1,java.lang.OutOfMemoryError:Java heap space

堆空间内存溢出

常见原因:

  1. 堆空间不足(根本原因)
  2. 数据量峰值,某个时间段数据量突然达到峰值,大于设计时的阈值
  3. 内存泄漏,不能回收的内存一直累积(比如局部变量一直增多)

2,java.lang.OutOfMemoryError:GC overhead limit exceeded

应用程序花费超过80%的时间用来做GC并且回收了不到2%的堆内存

常见原因:

堆内存一直增加,GC一直在工作,占用100%CPU

3,java.lang.OutOfMemoryError:Permgen space

持久代内存被耗尽(JDK8已经移除永久代)

常见原因:

  1. 加载了太多的类(因为持久代中主要存储每个类信息例如:类加载器引用运行时常量池(所有常量、字段引用、方法引用、属性)字段(Field)数据方法(Method)数据方法代码方法字节码等等)
  2. 重新部署时没有完全清除上次永久代残留

4,

你可能感兴趣的:(计算机基础)