【问题标题】:OutOfMemoryError: PermGen space - XX:MaxPermSize doesn't workOutOfMemoryError: PermGen 空间 - XX:MaxPermSize 不起作用
【发布时间】:2016-08-05 03:51:34
【问题描述】:

我知道关于这个错误有数千个问题,但我还没有找到解决问题的方法。 我在服务器中部署了三个 Web 应用程序。这个应用程序是用 java、spring 框架和 hibenate 制作的。我的服务器有 tomcat6 和 opendjdk 1.7。正如我之前所说,在使用我的应用程序一段时间后,出现 OutOfMemoryError: Permgen space。在我阅读的所有解决方案中,建议使用以下命令更改选项 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 的价值?

【问题讨论】:

  • Permgen 在 Java8 中被移除了,也许你可以试试看?
  • 我的应用程序是用 java 7 测试的。我不知道更新 java 的版本是否会导致我的应用程序不适用于我的应用程序的依赖项版本与 java 8 之间的不兼容。
  • Java 向后兼容。这只是这条规则的一个小例外,但它很容易修复,并且只有在您使用 JDK8 目标 1.7 编译您的应用程序并在 1.7 JVM 上运行它时才会发生。 stackoverflow.com/questions/32954041/…

标签: spring hibernate tomcat6 openjdk


【解决方案1】:

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

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

【讨论】:

  • 抱歉我的规范失败,但标题如何说错误是关于 PermGen 空间的
猜你喜欢
  • 2013-03-08
  • 2016-03-29
  • 2014-05-15
  • 2014-10-14
  • 2011-10-20
  • 2014-07-15
  • 2016-05-03
  • 1970-01-01
  • 2011-09-04
相关资源
最近更新 更多