java.lang.OutOfMemoryError:使用eclipse的tomcat中的PermGen空间 [英] java.lang.OutOfMemoryError: PermGen space in tomcat with eclipse

查看:91
本文介绍了java.lang.OutOfMemoryError:使用eclipse的tomcat中的PermGen空间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  java.lang.OutOfMemoryError:PermGen space 
在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.define Class(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.doCompile(QueryTranslatorImpl.java:180)
在org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
在org.hibernate.engine.query .HQLQueryPlan。< init>(HQLQueryPlan.java:101)
在org.hibernate.engine.query.HQLQueryPlan。< init>(HQLQueryPlan.java:80)
在org.hibernate.engine .query.QueryPl aCache.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)
at sun.reflect.NativeMethodAttributeImpl.invoke0
在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中的 -XX:MaxPermSize = 256m 添加到Tomcat中:服务器>打开启动配置>参数



更新(2014年)这里的这个问题和答案关于新的Java 8 Metaspace



并看看这里:



如何处理java.lang.OutOfMemoryError:PermGen space错误


i get this exception frequently when running my app on tomcat using eclipse:

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)

解决方案

try to raise perm space, add following parameters to vm start-up

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

also add -XX:MaxPermSize=256m to Tomcat in Eclipse: Server > Open Launch Configuration > Arguments

Update (in 2014): take a look here at this question and answer about the new Java 8 Metaspace.

and take a look here:

How to deal with "java.lang.OutOfMemoryError: PermGen space" error

这篇关于java.lang.OutOfMemoryError:使用eclipse的tomcat中的PermGen空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆