Tomcat7内存不足错误: PermGen space

标签 tomcat grails richfaces tomcat7

我有 tomcat 7.0.47grails 2.3.7 中的一个项目和 windows 2003 中 RichFaces 4.3.4 中的 2 个项目 服务器(2Gb RAM)。如果我在 tomcat 中加载其中的 2 个 - 它们可以工作,但如果我加载所有它们 (3) - 我会看到 permgen outofmemory 错误。 我尝试在 tomcat 中更改 MaxPermSize 但没有得到结果。 Grails 项目很大。我可以对项目做些什么来优化 PermGet 内存使用吗?

我将 tomcat 更改为 GlassFish 3.1.2。现在所有项目的内存都足够了。但是我的 Grails 项目中的 Easygrig 插件有问题。

最佳答案

Java 应用程序只能使用有限的内存。您的特定应用程序可以使用的确切内存量是在应用程序启动期间指定的。为了让事情变得更复杂,Java 内存被分成不同的区域,其中一个区域 - 名为 permgen - 在这种情况下你已经用完了。

“java.lang.OutOfMemoryError: PermGen space”的主要原因:太多的类或太大的类被加载到永久代。在你的情况下,我怀疑你是否真的设法将 2GB 的数据加载到 permgen 中,我怀疑你在你的 Tomcat 配置中拼错了属性 (-XX:MaxPermSize) 或者这个配置没有被 Tomcat 拾取根本。

您可以通过将 jconsole 附加到 Tomcat 进程来验证配置更改是否被拾取,类似于以下示例:

my-machine me$ jps
3160 Jps
1514 org.apache.catalina.startup.Bootstrap
my-machine me$ jconsole 1514

导航到 VM 摘要选项卡,您应该会看到 Tomcat 实例实际使用的参数。

关于Tomcat7内存不足错误: PermGen space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196079/

相关文章:

java - jsf2 flash 的生命周期比它应该的要长吗?

java - Struts 1.2.9 重新加载application.properties

grails - Grails 3:_Events.groovy中的eventCreateWarStart的替代品是什么

javascript - 一次 POST Grails 中的所有传入参数

Grails 3 升级 - 无法解析类 grails.plugin.rendering.pdf.PdfRenderingService

java - Richfaces:dropDownMenu 操作

jquery - 如何从 jQuery 触发 JSF 渲染

tomcat - OpenShift 迁移 - Conf 文件中的 ENV 变量没有像以前那样被替换

java - 如何访问/myservlet 示例 servlet?

文件上传到服务器的安全漏洞 - java ee - tomcat