Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 部署时出现PermGen错误Tomcat8/Spring Data/Hibernate_Java_Spring_Hibernate_Tomcat_Permgen - Fatal编程技术网

Java 部署时出现PermGen错误Tomcat8/Spring Data/Hibernate

Java 部署时出现PermGen错误Tomcat8/Spring Data/Hibernate,java,spring,hibernate,tomcat,permgen,Java,Spring,Hibernate,Tomcat,Permgen,使用Tomcat8/SpringMVC/SpringDate/Hibernate处理webapp时,每隔几次部署到服务器上,甚至在java开发环境中保存,都会导致以下错误。有人知道我如何避免或解决这个问题吗?我尝试增加JVM以获得更多内存,但没有效果。Spring是使用java配置文件而不是旧的web.xml方法设置的 [ContainerBackgroundProcessor[StandardEngine[Catalina]]]错误org.springframework.web.contex

使用Tomcat8/SpringMVC/SpringDate/Hibernate处理webapp时,每隔几次部署到服务器上,甚至在java开发环境中保存,都会导致以下错误。有人知道我如何避免或解决这个问题吗?我尝试增加JVM以获得更多内存,但没有效果。Spring是使用java配置文件而不是旧的web.xml方法设置的

[ContainerBackgroundProcessor[StandardEngine[Catalina]]]错误org.springframework.web.context.ContextLoader-上下文初始化失败
java.lang.OutOfMemoryError:PermGen空间
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:800)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
位于org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2494)
位于org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:860)
位于org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1302)
位于org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
位于org.springframework.util.ConcurrentReferenceHashMap$EntrySet.iterator(ConcurrentReferenceHashMap.java:794)
位于java.util.AbstractMap$1$1。(AbstractMap.java:322)
位于java.util.AbstractMap$1.iterator(AbstractMap.java:321)
位于org.springframework.beans.CachedIntrospectionResults.clearClassLoader(CachedIntrospectionResults.java:164)
位于org.springframework.context.support.AbstractApplicationContext.resetCommonCaches(AbstractApplicationContext.java:881)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:563)
位于org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)
位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)
位于org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
位于org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4810)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.StandardContext.reload(StandardContext.java:3831)
位于org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:292)
位于org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5616)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1377)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1349)
运行(Thread.java:745)

线程“ContainerBackgroundProcessor[StandardEngine[Catalina]]”java.lang.OutOfMemoryError:PermGen空间出现异常
我已经看到了Tomcat PermGen的其他问题,所以我首先尝试使用这些参数,看看在增加PermGen大小之前是否足够

-XX:+CMSClassUnloadingEnabled 
-XX:+CMSPermGenSweepingEnabled

如果这不起作用,请检查以确保增加PermGen而不是堆大小。您可以使用以下JVM参数设置PermGen大小:
-XX:MaxPermSize=256M

这是因为您的应用程序没有完全取消部署。在开发环境中保存时会出现错误,因为这可能会触发应用程序的重新部署

这种错误很难调试,如果找到原因,您可能无法自行解决问题,因为您使用的库可能存在故障。有关跟踪此类错误的详细信息,请参见:

几年前我也遇到过同样的问题,结果在log4j中出现了问题。最后,我们采取了简单的方法,并决定重新启动应用程序服务器,而不是重新部署应用程序

事实上,这也是当今许多项目选择在每个appserver(或嵌入服务器)上部署一个应用程序,然后在更改后重新启动整个应用程序的原因之一


尽管如此,如果您有时间,跟踪这一点是值得的,因为它很可能是一个配置错误。您还可以了解很多关于应用程序及其运行时的信息。

希望您可以通过将my添加到应用程序中来解决这个问题。在撰写本文时,这意味着Maven依赖性

<dependency>
  <groupId>se.jiderhamn</groupId>
  <artifactId>classloader-leak-prevention</artifactId>
  <version>1.15.2</version>
</dependency>
要了解有关可能导致此问题的第三方库的更多信息,并了解如何在自己的代码和外部库中调试此问题,请参阅

<listener>
  <listener-class>se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventor</listener-class>
</listener>