org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: PermGen space
部署应用程序时出现此错误,服务器在15到20分钟后挂起。
答案 0 :(得分:0)
可能有一个非常具体的原因导致产生PermGen错误。 但..
使用(在JAVA_OPTS中)
为tomcat JVM分配更多空间-XX:MaxPermSize=256m
或任何你想要的尺寸。
请查看http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/
答案 1 :(得分:0)
解决方案是在tomcat服务器的PermGen
中增加catalina.bat
堆大小;这可以给你一些喘息空间,但最终这也会在java.lang.OutOfMemoryError: PermGen
空间后返回。
Follow these steps to increase the PermGen Heap size:
1) Go to Tomcat installation directory i.e C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.14\bin in Windows.
2) Add JAVA_OPTS in your catalina.bat
set JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
增加PermGen空间只能在tomcat中阻止java.lang.OutOfMemoryError: PermGen
一段时间,最终会根据您重新部署Web应用程序的次数发生,最好找到导致tomcat中内存泄漏的有问题的类,解决它。
答案 2 :(得分:0)
当你有内存泄漏时,它表示你的应用程序中有一个永久代号泄漏,这意味着无论何时在应用程序服务器中重新部署应用程序,它都会留下很多类。这些旧的类定义最终会出现在你的JVM永久生成中,占用宝贵的内存,因此解决方案永远不会增加 Permgen 大小,这个“解决方案”是定时炸弹。
与其他类型的内存泄漏情况一样,没有黄金工具或固定的操作方法列表,您可以遵循以神奇地解决问题。有许多可能的情况和许多方法来解决它。
说过我建议使用 Plumbr (official website),这里有一个非常有用的指南来解决它:
祝你好运。