Java服务器常用OOM总结

  1. java.lang.OutOfMemoryError: Java heap space ,表示 Java 堆空间不足。当应用程序申请更多的内存时,若 Java 堆内存己经无法满足应用程序的需要,则将抛出这种异常。
  2. java.lang.OutOfMemoryError: PermGen space ,表示 Java 永久代(方法区)的空间不足。永久代用于存放类的字节码和常量池,类的字节码被加载后存放在这个区域,这和存放对象实例的堆区是不同的。大多数 口明 的实现都不会对永久代进行垃圾回收,因此,只要类加载过多就会出现这个问题。 般的应用程序都不会产生这个错 ,然而,对于 Web 服务器会产生大量JSP, JSP 在运行时被动态地编译为 Java Servlet 类,然后加载到方法区,因此有很多 JSP Web 工程可能会产生这个异常。
  3. java.lang.OutOfMemoryError: unable to create new native thread 本质原因是创建了太多的线程,而系统允许创建的线程数是有限制的。
  4. java.lang.OutOfMemoryError: GC ov rhead limit exceeded ,是并行 (或者并发)垃圾回收器的 GC 回收时间过长、超过 98%的时间用来做 GC 并且回收了不到 2% 的堆内存时抛出的异常,用来提前预警,避免内存过小导致应用不能正常工作。

  1. java.lang.StackOverflowError ,是 NM 线程由于递归或者方法调用的层次太多,占满了线程堆战而导致的,线程堆梭的默认大小为 11MB。
  2. java.net.SocketException: too many open fille, 是由于系统对文件句柄的使用有限制,而某个应用程序使用的文件句柄超过了这个限制而导致的。

你可能感兴趣的:(Java服务器常用OOM总结)