【原创】 Java-Exception-Java异常汇总
栏目:Java  作者:  阅读:(3742)

Java异常汇总


Java异常汇总:


一:内存不足

2016-8-18 15:14:39 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: PermGen space
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
	at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at org.eclipse.jdt.internal.compiler.Compiler.initializeParser(Compiler.java:687)
	at org.eclipse.jdt.internal.compiler.Compiler.<init>(Compiler.java:285)
	at org.eclipse.jdt.internal.compiler.Compiler.<init>(Compiler.java:161)
	at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:444)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)


截图:

内存不足异常.png


解决思路:关闭一些程序,调高jvm,tomcat参数

解决方案(摘自网络:http://www.xuebuyuan.com/569653.html):

一、尝试修改Eclipse.ini 文件 (此方法不行)【工作意见,该方法我没有使用】


找到eclipse 目录下的eclipse.ini 文件,修改下面的内容:

-Xms40m

-Xmx512m

修改后重启eclipse ,发现根本不起作用。经过后来查阅一些资料,原来这里设置的最小内存和最大内存是不是给JVM 使用的,这个内存值包含了eclipse 自身使用的内存。


二、修改jdk使用内存(此方法可行)【该方法使用了的】


找到eclispe 中window->preferences->Java->Installed JRE ,点击右侧的Edit 按钮,在编辑界面中的 “Default VM Arguments ”选项中,填入如下值即可。

-Xms64m -Xmx128m


实际使用截图:


配置jdk内存.png

 


三、修改Run Configurations (此方法可行)【此方法采用了,修改tomcat的内存】


在代码上右键,依次点击“Run As ”-> “Run Configurations ”,在Arguments 参数中的“VM arguments: ”中填入如下值即可。

-Xms64m -Xmx128m


实际使用截图:


配置tomcat内存.png

 


四、查询当前JVM 内存代码【这个我没测试,大家有空可以试试】

下面是查询当前JVM 内存大小的代码,可以测试以上设置后JVM 的内存是否会变化。增加JVM 内存的配置项后,无需重新启动eclipse 。具体的代码如下:

public class TestMemory {

    /**

      * @param args

      */

    public static void main(String[] args) {

       System. out .println( " 内存信息 :" + toMemoryInfo ());

    }

 

    /**

      * 获取当前 jvm 的内存信息

      *

      * @return

      */

    public static String toMemoryInfo() {

 

       Runtime currRuntime = Runtime.getRuntime ();

       int nFreeMemory = ( int ) (currRuntime.freeMemory() / 1024 / 1024);

       int nTotalMemory = ( int ) (currRuntime.totalMemory() / 1024 / 1024);

       return nFreeMemory + "M/" + nTotalMemory + "M(free/total)" ;

    }

}


摘自:http://blog.csdn.net/w420372197/article/details/7878404


eclipse下的tomcat内存设置大小


在eclipse中设置,居然可以了,

设置步骤如下:

1.点击eclipse上的debug图标旁边的下拉箭头

2.然后选择Run Configurations,

3.系统弹出设置tomcat配置页面,在Argument中末尾添加参数中的VM arguments中追加:

-Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m

参数的意思

-vmargs:说明后面是VM的参数

-Xms40m:虚拟机占用系统的最小内存

-Xmx256m:虚拟机占用系统的最大内存

-XX:PermSize:最小栈内存大小。一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置

-XX:MaxPermSize:最大栈内存大小。这个也适当大些

-Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M


转:http://www.cnblogs.com/jerome-rong/archive/2012/05/15/2501027.html


http://hi.baidu.com/xbnh0217/item/ed8fa7802d41aae8e596e0a9


Java中堆内存与栈内存分配浅析:http://soft.chinabyte.com/database/407/11319907.shtml


eclipse内存设置,tomcat内存设置,查看内存大小:http://www.cnblogs.com/youngjoy/p/4239978.html














昵称
邮箱
域名
  通知博主
验证码

  随机文章