内存不足:Permgen 空间 [重复]

Posted

技术标签:

【中文标题】内存不足:Permgen 空间 [重复]【英文标题】:Out of Memory : Perm Gen Space [duplicate] 【发布时间】:2013-03-14 11:55:38 【问题描述】:

我有一个out of space : perm gen 错误,我不知道该怎么办。我正在使用 apache tomcat,但我没有完全访问服务器的权限。

【问题讨论】:

给我们看一些代码,异常跟踪什么的。 别告诉我 Google 没有显示 Out of Memory: Perm Gen Space 的任何结果! 基本上有两种通用方法:1.减少内存消耗,2.增加内存容量 这是 Tomcat 的一个长期存在的错误,最近的版本终于修复了。因此,您可能使用的是旧版本的 Tomcat。该问题与位于静态变量中的内存有关,这些变量在 servlet 的启动和停止之间不会被释放。因此,除非您对静态变量做一些疯狂的事情,否则请更新 Tomcat。如果你不能,那么每次收到错误时都必须退回 Tomcat。 【参考方案1】:

这表明内存泄漏*导致 Java 在 Perm Gen 中创建太多对象,这是为非常长寿命(永久)内存保留的内存部分。如果您没有对服务器的完全访问权限,要么 a) 不是您的问题,您应该通知系统管理员,或者 b) 您的代码有问题,如果您不显示,我们将无法帮助您你在做什么。

如果您不确定是 a) 还是 b),请尝试恢复您的更改/看看是否有其他人遇到同样的问题。如果无论您看到什么错误,它都是 a)。如果您能够通过删除代码来阻止此错误,那就是 b)。

*您可能做的一切都完全正确,只需要增加您服务器上的 PermGen 设置,但正如您所说,这不是您的机器,这似乎不太可能是解决方案。

【讨论】:

不一定表示“泄漏”;完全有可能正在执行的代码只需要比默认 MaxPermSize 更多的资源。【参考方案2】:

你可以使用:

-XX:MaxPermSize=128m 来增加空间。但这通常只会推迟不可避免的事情。

您还可以启用 PermGen 进行垃圾回收

【讨论】:

以上是关于内存不足:Permgen 空间 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在达到 Max 之前 PermGen 空间不足

Java内存不足报错:OutOfMemoryError:PermGen space

JBoss 4.0.5GA 多次部署应用程序出现 PermGen 内存不足(溢出)问题

PermGen space

JRuby PermGen 空间不足甚至在 ruby​​ 代码中使用 java 对象

C# graphics图像复制时提示内存不足