常见的问题PermGen space总结
在启动tomcat或者启动tomcat后,访问tomcat里的web项目,会报这样的错误
Exception in thread "http-bio-8080-exec-1" java.lang.OutOfMemoryError: PermGen s
pace
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.apache.catalina.connector.Response.setConnector(Response.java:152
)
查了网上的资料,自己在windows 64位环境下,测试了一下
有两种解决办法:
修改catalina.bat
1、在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128m -XX:MaxPermSize=512m
2、在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=-server -XX:PermSize=128M -XX:MaxPermSize=512m
3、或者 (在eclipse调试的时候,发现这个方法也有用)
在echo "Using CATALINA_BASE: $CATALINA_BASE"前加上
JAVA_OPTS="-server -XX:PermSize=256m -XX:MaxPermSize=512m"
结果是可以的
在linux环境下,没有出现过这样的问题,现在先把从网上找的资料贴进来,下次碰到这样的问题时,再实验
方法和windows里的一样,只是需要改catalina.sh文件
1、在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128m -XX:MaxPermSize=512m
2、在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=-server -XX:PermSize=128M -XX:MaxPermSize=512m