在公司做项目过程中都是在Linux环境下用tomcat下运行应用,所以使用tomcat过程也出现过很多问题,汇总总结一下:
1.在tomcat的webapps目录下部署好应用包之后启动报错:
java.lang.OutOfMemoryError: PermGen space
查找原因:
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法:
手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在Java代码
“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
catalina.sh下为:
Java代码
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"
2.Cannot find any VM in Java Home
这是赋予可执行权限,一些配置还是未更新;
3.The BASEDIR environment variable is not defined correctly
This environment variable is needed to run this program
查找原因:部署应用的服务器的主机名即hostname要是合法的URL,例如,主机名中不能有带下划线的字符标识等。
解决方法:主机名在/etc/hosts里修改为合法的URL
待后续增加总结。∧_∧