Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.OutOfMemoryError:eclipse下tomcat中的PermGen空间_Eclipse_Tomcat - Fatal编程技术网

java.lang.OutOfMemoryError:eclipse下tomcat中的PermGen空间

java.lang.OutOfMemoryError:eclipse下tomcat中的PermGen空间,eclipse,tomcat,Eclipse,Tomcat,在使用eclipse在tomcat上运行应用程序时,我经常遇到此异常: java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLo

在使用eclipse在tomcat上运行应用程序时,我经常遇到此异常:

java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:265)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1650)
    at com.spacerdv.dao.impl.UserDaoImpl.getUserDetails(UserDaoImpl.java:170)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
java.lang.OutOfMemoryError:PermGen空间
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:616)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
位于org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850)
位于org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:616)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
位于org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850)
位于org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
位于org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:265)
位于org.hibernate.hql.ast.QueryTranslatorImpl.docomfile(QueryTranslatorImpl.java:180)
位于org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
在org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:101)
在org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:80)
位于org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
位于org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
位于org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
位于org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1650)
位于com.spacerdv.dao.impl.UserDaoImpl.getUserDetails(UserDaoImpl.java:170)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

尝试增加perm空间,将以下参数添加到vm启动

-XX:PermSize=256m-XX:MaxPermSize=256m

同时在Eclipse中向Tomcat添加-XX:MaxPermSize=256m:服务器>打开启动配置>参数

更新(2014年):看看

看看这里:


我今天也遇到了这个问题。这事完全出乎意料地发生了。昨天,我将JDK/JRE从1.6.0_13更新为1.6.0_21,以修复Glassfish 3.0.1的一个特定问题,Eclipse突然与那些
OutOfMemoryError:PermGen space
错误决裂。在(错误地)咆哮Glassfish插件并认为在清理工作区元数据后问题没有得到解决之后,结果证明这是由JVM供应商字符串从“Sun”更改为“Oracle”引起的,自1.6.0\u 20以来。Eclipse没有识别新的JVM供应商,因此没有应用
Eclipse.ini
中指定的VM参数

这被称为Eclipse问题,Eclipse男孩很快发布了一份报告。在得到更永久的修复之前,解决方法实际上是将以下行添加到
eclipse.ini

-XX:MaxPermSize=256m -XX:MaxPermSize=256m
因此,如果您最近进行了JVM更新,可能值得一看。

您可以为eclipse配置以下参数:

“为了解决这个问题,我在Eclipse中停止了服务器。双击服务器选项卡中的服务器以打开服务器的概览页面。单击打开启动配置,然后单击参数选项卡。”

我添加了以下VM参数:

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

参考

可能重复的谢谢!在更改web服务堆栈后,我们的团队在QA和生产服务器上出现了一些问题,这两个选项修复了我们的PermGen问题。(至少现在是这样。)在Netbeans上,可以将此参数添加到:服务>服务器>Apache Tomcat(右键单击)>属性>平台>虚拟机选项您可能还想添加
-server-Xmx1024m
此解决方案只会推迟问题的解决。我的tomcat通常在MaxPermSize=512m下运行,但仍然会耗尽PermSize。当更改过的代码被频繁自动部署时,会发生这种情况。我的解决方法是每隔一段时间显式重新启动tomcat。