我的Web应用程序在tomcat apache-tomcat-6.0.35上运行,并且它在任何问题上运行良好。但是今天我在catalina.out日志中显示以下异常并且无法登录系统。
Jul 9, 2013 2:40:15 PM org.apache.coyote.http11.Http11Processor process
SEVERE: Error processing request
java.lang.OutOfMemoryError: PermGen space
我的印象是,部署或重新部署应用程序时可能会出现此异常。但是当应用程序运行时没有任何问题我得到了这个。这可能是什么原因。请提供建议
答案 0 :(得分:2)
Tomcat中的每个webapp都有一个单独的类加载器,它有一组单独的加载类。当我们启动Tomcat时,它不会立即加载所有应用程序的所有类,而是延迟加载应用程序。当应用程序变为活动状态时,它会开始加载其类,并且可能会发生JVM耗尽permgen空间。也就是说,即使不重新部署应用程序,也可能会发生这种情况。
答案 1 :(得分:1)
在JVM
启动时添加这些Optionsto Tomcat
命令行或添加到IDE VM Options
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
OR
-XX:MaxPermGen=128M
答案 2 :(得分:1)
听起来你的一个webapps消耗了大量内存。你试过提高PermGen的尺寸吗?在$ CATALINA_HOME / bin / catalina.sh中,您可以添加
-XX:PermSize=512m -XX:MaxPermSize=512m
到你的JAVA_OPTS,以便它分配足够的空间来运行。
答案 3 :(得分:1)
您将离开permGen空间,尝试在tomcat启动脚本上更改此参数
<强> /etc/init.d/tomcat6 强>
JAVA_OPTS="-Djava.awt.headless=true -XX:MaxPermSize=512M"
根据需要设置内存量。
答案 4 :(得分:1)
这肯定是在部署期间经常出现的错误。我已经看到它在Grails和Java应用程序中都出现过很多次。您可以通过调整JVM启动参数-XX:MaxPermSize来增加permgen空间,即:
-XX:MaxPermSize=256m
此主题详细介绍了该问题:Thread
答案 5 :(得分: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"
请参阅possible fix