Tomcat7 OutOfMemoryError:PermGen空间

时间:2014-08-08 04:30:28

标签: tomcat grails richfaces tomcat7

我有tomcat 7.0.47grails 2.3.7 and 2 in RichFaces 4.3.4 in windows 2003服务器(2Gb RAM)中的一个项目。如果我在tomcat加载其中的2个 - 它们可以正常工作,但如果我加载所有这些(3) - 我会看到permgen outofmemory error。 我尝试过改变MaxPermSize in tomcat但是没有得到结果。 grails项目很大。我可以使用项目来优化PermGet内存使用吗?

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

2 个答案:

答案 0 :(得分:2)

允许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摘要TAB,您应该看到Tomcat实例实际使用的参数。

答案 1 :(得分:0)

没有。您的系统资源不足。在Java的内存模型中,Permenant Generation是类,方法和其他永久事物所在的地方。为了降低PermGen容量,您需要减少永久应用程序成员。在2GB内存中,你会很难受到这种压力。

祝你好运!