如何在eclipse中定义PremGen空间?获取SpringContext初始化失败java.lang.OutOfMemoryError:PermGen space

时间:2014-11-02 18:04:29

标签: java spring tomcat

以下是运行java Web应用程序时出现的以下错误: -

INFO: Initializing Spring root WebApplicationContext
2014-11-02 23:26:35,690 ERROR org.springframework.web.context.ContextLoader - Context         initialization failed
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
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.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
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.springframework.util.ClassUtils.forName(ClassUtils.java:211)
at     org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)
at   org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:222)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:505)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:362)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)

有人会帮我解决这个错误吗?有没有可能解决这个问题?

2 个答案:

答案 0 :(得分:0)

Tomcat具有有限的JVM PermGen空间来管理在其上运行的所有应用程序,因此当您说在不正确管理permgen的情况下重新部署应用程序时,它将消耗越来越多的内容,直到它崩溃,需要重新启动服务器。 Ť 他的文章解释了如何解决这个问题。

http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/

当然,功能更强大的服务器/工作站不会很快看到此错误,并且有更多的移动空间(关于配置)。

e.g。我的弱电笔记本在10次重新部署后得到了permgen错误,因为我的主服务器可以通过适当的管理和资源可用性来实现无限制。

答案 1 :(得分:0)

如果它在Eclipse中运行,您可能需要设置Eclipse permgen:   Increasing heap space in Eclipse: (java.lang.OutOfMemoryError)