我在使用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)
Run Code Online (Sandbox Code Playgroud)
Chr*_*ris 97
尝试提高perm空间,将以下参数添加到vm启动
-XX:PermSize = 256m -XX:MaxPermSize = 256m
还要在Eclipse中向Tomcat 添加-XX:MaxPermSize = 256m:Server > Open Launch Configuration > Arguments
更新(2014年):看看这个问题并回答有关新Java 8 Metaspace的问题.
看看这里:
如何处理"java.lang.OutOfMemoryError:PermGen space"错误
小智 21
您可以为eclipse配置这些参数:
"为了解决这个问题,我在Eclipse中停止了服务器.在Servers选项卡中双击服务器,打开服务器的Overview页面.单击Open Launch Configuration,然后单击Arguments选项卡.
我添加了以下VM参数:
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
Run Code Online (Sandbox Code Playgroud)
参考http://malcolmmallia.com/malcblog/?p=60
我今天也遇到了这个问题.它完全出乎意料.昨天我已经将JDK/JRE从1.6.0_13更新到1.6.0_21以修复Glassfish 3.0.1特定问题,Eclipse突然破坏了这些OutOfMemoryError: PermGen space错误.在Glassfish插件上(错误地)咆哮并且在清理工作区元数据后得出结论认为问题没有得到解决之后,事实证明这是由于自1.6.0_20以来JVM供应商字符串从"Sun"更改为"Oracle" .Eclipse无法识别新的JVM供应商,因此未应用指定的VM参数eclipse.ini.
这被报道为Eclipse问题319514,Eclipse男孩们很快发布了一个补丁.在他们更永久地修复它之前,解决方法确实是将以下行添加到eclipse.ini:
-XX:MaxPermSize=256m
因此,如果您最近进行了JVM更新,那么可能值得一看.
| 归档时间: |
|
| 查看次数: |
86894 次 |
| 最近记录: |