0

My Web application is running on tomcat apache-tomcat-6.0.35 and It was working fine witout any issue.But today I show bellow exception in catalina.out log and was unable to login to the system.

Jul 9, 2013 2:40:15 PM org.apache.coyote.http11.Http11Processor process
SEVERE: Error processing request
java.lang.OutOfMemoryError: PermGen space

I was under impression this exception can be ocuured when you deploy or redeploy a application. But I got this when the application is running without any issues. What could be the reason for this. Kindly advice

4

6 回答 6

2

Tomcat 中的每个 webapp 都有一个单独的类加载器,其中包含一组单独的加载类。当我们启动 Tomcat 时,它不会一次加载所有应用程序的所有类,而是延迟加载应用程序。当一个应用程序变得活跃时,它开始加载它的类,并且可能会发生 JVM 耗尽 permgen 空间。也就是说,即使没有重新部署应用程序,它也可能发生。

于 2013-07-10T05:31:21.063 回答
1

启动时将这些选项添加到JVM命令行Tomcat或添加到IDEVM Options

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

或者

-XX:MaxPermGen=128M
于 2013-07-10T05:24:47.637 回答
1

听起来您的某个 web 应用程序正在消耗大量内存。您是否尝试过提高 PermGen 的大小?在 $CATALINA_HOME/bin/catalina.sh 你可以添加

-XX:PermSize=512m -XX:MaxPermSize=512m

到您的 JAVA_OPTS 以便它分配足够的空间来运行。

于 2013-07-10T05:25:11.220 回答
1

您正在离开 permGen 空间,请尝试在您的 tomcat 启动脚本上更改此参数

/etc/init.d/tomcat6

JAVA_OPTS="-Djava.awt.headless=true -XX:MaxPermSize=512M"

根据需要设置内存量。

于 2013-07-10T05:25:27.273 回答
1

这绝对是部署期间经常出现的错误。我已经看到它在 Grails 和 Java 应用程序中出现过多次。你可以通过调整JVM启动参数-XX:MaxPermSize来增加你的permgen空间,即:

-XX:MaxPermSize=256m

该线程详细介绍了该问题:线程

于 2013-07-10T05:25:27.713 回答
1

几天前我遇到了这个错误。我通过重新启动真机来修复它 - 部署有问题。

您也可以通过添加来修复它

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 
-server -Xms1536m -Xmx1536m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m 
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"

查看可能的修复

于 2013-07-10T05:25:51.173 回答