我有tomcat 7.0.47
个grails 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插件存在问题。
答案 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内存中,你会很难受到这种压力。
祝你好运!