spring - 内存不足错误: PermGen space - XX:MaxPermSize doesn't work

标签 spring hibernate tomcat6 java

我知道有数千个关于此错误的问题,但我还没有找到解决我的问题的方法。 我在服务器中部署了三个 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 的值(value)?

最佳答案

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

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

关于spring - 内存不足错误: PermGen space - XX:MaxPermSize doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36608762/

相关文章:

java - Spring Boot 外部属性不适用于内部带有 Spring Batch 的 Boot 2.0.0.RELEASE

java - Session Factory bean 创建和注入(inject)时出现 NoSuchElementException

security - Tomcat 6 和 SSL 不工作

mysql连接无法使用tomcat进行JSP部署

java - Jetty_run错误java.lang.TypeNotPresentException : Type javax.annotation.meta.When不存在

java - jpa:分离与 transient 定义

java - 如何在 hibernate 中第一次创建数据库模式并在模式修改的情况下进一步更新它?

java - 嵌入模式下的 h2 并发更新

java - 贾斯珀报告 : How to add External url link in report

hibernate - Spring/JPA/Hibernate/PostgreSQL 在嵌套事务中抛出 EntityNotFoundException