最近我在我的Web应用程序中遇到了这个错误:
java.lang.OutOfMemoryError:PermGen空间
这是在Tomcat 6和JDK 1.6上运行的典型Hibernate/JPA + IceFaces/JSF应用程序.显然,重新部署应用程序几次后就会发生这种情况.
导致它的原因以及可以采取哪些措施来避免它?我该如何解决这个问题?
我在Windows上安装了Tomcat 7,我正在部署我的应用程序.我需要为服务器上运行的应用程序设置几个JVM args.在网上搜索时,我发现两个(如果算上Windows服务的话有三个)阵营:
对于那些使用eclipse的人:
双击服务器>打开启动配置>参数选项卡
对于那些使用tomcat的启动脚本:
创建setenv.bat(或Linux的setenv.sh)并设置CATALINA_OPTS或JAVA_OPTS
但是,它们似乎是相互排斥的.在eclipse中设置参数(如果可以告诉它们存储的位置,则为+1)不会影响启动脚本,并且在eclipse中启动时设置setenv.bat属性不会影响服务器.两者都是单独的.
两者都指向相同的安装,并且在服务器的概述页面上的eclipse中,我选择了"使用Tomcat安装(控制Tomcat安装)".
eclipse ×1
eclipse-wtp ×1
exception ×1
java-6 ×1
memory-leaks ×1
permgen ×1
tomcat ×1
tomcat7 ×1