OutOfMemoryError:PermGen空间 - XX:MaxPermSize不起作用

时间:2016-04-13 20:17:52

标签: spring hibernate tomcat6 openjdk

我知道有很多关于此错误的问题,但我还没有找到解决问题的方法。 我在服务器中部署了三个Web应用程序。这个应用程序是用java,spring框架和hibenate创建的。我的服务器有tomcat6和opendjdk 1.7。正如我之前所说,在使用我的应用程序一段时间后,出现OutOfMemoryError:Permgen空间。在我阅读的所有解决方案中,建议使用以下命令更改de选项MaxPermSize:

JAVA_OPTS="-XX:PermSize=256m -XX:MaxPermSize=512m"

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

我尝试将第一个命令放在我服务器的文件tomcat6.conf上,并作为文件setenv.sh,我在命令行中直接尝试了第二个命令,但这些解决方案都不起作用。当我执行命令时:

java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'

在我尝试更改之前,我的PermGen Space的值是相同的。 我已经与我的服务器的管理员交谈,他说这些值不会改变,因为它们基于内存系统总数的百分比,并且改变它们的独特方式是增加系统的内存。我很困惑,因为我的管理员说了一件事,我读到的解决方案就是另一回事。可以改变这个值吗?我怎样才能增加PermGen的价值?

1 个答案:

答案 0 :(得分:1)

您提到的是OutOfMemoryError,但您没有说明MaxPermSpace是异常中的原因。可能是你刚刚用完堆内存。在这种情况下,它应该是我应该设置的-Xmx和-Xms参数。

通常,如果是PermSpace,则会在异常中将其作为原因提及。