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)
截图:
解决思路:关闭一些程序,调高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
实际使用截图:
三、修改Run Configurations (此方法可行)【此方法采用了,修改tomcat的内存】
在代码上右键,依次点击“Run As ”-> “Run Configurations ”,在Arguments 参数中的“VM arguments: ”中填入如下值即可。
-Xms64m -Xmx128m
实际使用截图:
四、查询当前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
上一篇: 女生各个年龄段的称呼...