在tomcat下部署多个web应用时,经常会出现 :OutOfMemoryError:permgem space异常(即方法区内存溢出),方法区内存存储类信息,常量,静态变量等,如果加载的类过多就会出现此异常。解决方法有以下几点:
1、修改tomcat内存分配:找到echo Using CATALINA_BASE: "%CATALINA_BASE%",在上一行加:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m。
2、将不同的web应用的jar共享,这样就避免同一jar包被不同的应用反复加载,消耗过多的内存空间。
a、catalina.properties文件中的common.loader,追加“,${catalina.home}/lib/shared/*.jar”。 追加后:
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/lib/shared/*.jar"<span style="font-family:宋体;font-size:12px;font-size:15px;">。</span>
b、修改catalina.properties文件中的shared.loader(默认后面是没值的),追加“${catalina.base}/shared/*.jar”。追加后:
shared.loader="${catalina.base}/shared/*.jar"<span style="font-family:宋体;font-size:12px;font-size:15px;">。</span>