Tomcat 性能调优 出现java.lang.OutOfMemoryError: PermGen space

时间:2023-03-08 16:38:37

Tomcat 在部署应用中,Server报错:java.lang.OutOfMemoryError: PermGen space,问题就是Tomcat内存分配的太小了。

解决办法 1:

修改Tomcat\bin\catalina.bat文件。
找到

tomcat6 为

set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf \logging.properties"

tomcat 7 为

set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

这句话。在前面加上rem注释掉。

在它下面加入:

set JAVA_OPTS=-server -Xms1024m -Xmx1024m -Xss512k -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true

重新启动Tomcat,正常启动了
修改后配置如下

if not "%LOGGING_MANAGER%" == "" goto noJuliManager
rem set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
set JAVA_OPTS=-server -Xms1024m -Xmx1024m -Xss512k -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true

解决方法 2:

在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:

rem ----- Execute The Requested Command ---------------------------------------
set JAVA_OPTS=-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true

如:

rem ----- Execute The Requested Command ---------------------------------------
set JAVA_OPTS=-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true
echo Using CATALINA_BASE: "%CATALINA_BASE%"
echo Using CATALINA_HOME: "%CATALINA_HOME%"
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"

建议:

将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。