PermGen space内存泄漏

时间:2014-12-31 10:07:27

标签: java postgresql struts2 tomcat6 netbeans-7

org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet default threw exception

java.lang.OutOfMemoryError: PermGen space

部署应用程序时出现此错误,服务器在15到20分钟后挂起。

3 个答案:

答案 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),这里有一个非常有用的指南来解决它

Solving run-time OutOfMemoryError

祝你好运。