常见受检和非受检异常,StackOverflowException和OutOfMemoryError常用解决方法
一、运行时异常(非受检异常):RuntimeException
NullPointerException,ArrayIndexOutBoundException,ClassCastException,IndexOutOfBoundsException,ArrayStoreException,BufferOverflowException
二、编译时异常(受检异常):除RuntimeException之外的Exception
ClassNotFoundException,IOException,SQLException,FileNotFoundException,InterruptedException
以下问题解决方式:
1.StackOverflowException出现的原因,主要是调用层次太深导致栈溢出或死循环
2.OutOfMemoryError:内存不足错误
解决方式:
-
增加java虚拟机中的XX:PermSize和XX:MaxPermSize参数的大小,其中XX:PermSize是初始永久保存区域大小,XX:MaxPermSize是最大永久保存区域大小。如针对tomcat6.0,在catalina.sh 或catalina.bat文件中一系列环境变量名说明结束处(大约在70行左右) 增加一行:JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m"
-
检查程序,看是否有死循环或不必要地重复创建大量对象。
-
增加Java虚拟机中Xms(初始堆大小)和Xmx(最大堆大小)参数的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m