java.lang. OutOfMemoryError: PermGen располагают с интервалами у кота с затмением

я часто получаю это исключение при запущении моего приложения на коте с помощью затмения:

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)
45
задан Mahmoud Saleh 5 July 2010 в 11:35
поделиться

2 ответа

попробуйте увеличить perm space, добавьте следующие параметры в vm start-up

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

также добавьте -XX:MaxPermSize=256m в Tomcat в Eclipse: Server > Open Launch Configuration > Arguments

Обновление (в 2014 году): посмотрите здесь на вопрос и ответ о новом метапространстве Java 8.

и посмотрите здесь:

Как справиться с ошибкой "java.lang.OutOfMemoryError: PermGen space"

97
ответ дан 26 November 2019 в 20:57
поделиться

У меня сегодня тоже возникла эта проблема. Это произошло совершенно неожиданно. Вчера я обновил 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_20. . Eclipse не распознал нового поставщика JVM и, следовательно, не применил аргументы VM, как указано в eclipse.ini .

Об этом сообщалось как о проблеме Eclipse 319514 , и ребята из Eclipse быстро выпустили патч . Пока они не исправят это навсегда, решение действительно состоит в том, чтобы добавить следующие строки в eclipse.ini :

-XX:MaxPermSize=256m

Итак, если вы недавно выполнили обновление JVM, возможно, стоит взглянуть к нему.

5
ответ дан 26 November 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: