【发布时间】:2014-12-24 07:33:15
【问题描述】:
我正在使用 Spring sts。我希望我使用内部服务器向导添加的 Tomcat v7.0 服务器上的 web 应用程序。
由于服务器不断地自动重新部署(也许?这就是我的理解),因此服务器在编辑 java 文件时不断耗尽内存并引发 Permgen 错误。考虑到我没有安装自己的 tomcat 副本,有没有办法增加为此服务器分配的 permgen 空间?
任何帮助或澄清都会很棒。
如果有帮助,我添加了堆栈跟踪:
严重:后台线程意外死亡 ContainerBackgroundProcessor[StandardEngine[Catalina]] 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.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) 在 org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 在 org.apache.log4j.spi.LoggingEvent.(LoggingEvent.java:159) 在 org.apache.log4j.Category.forcedLog(Category.java:391) 在 org.apache.log4j.Category.log(Category.java:856) 在 org.slf4j.impl.Log4jLoggerAdapter.log(Log4jLoggerAdapter.java:602) 在 org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225) 在 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:336) 在 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.StandardContext.reload(StandardContext.java:4007) 在 org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425) 在 org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524) 在 java.lang.Thread.run(Thread.java:745) 线程“ContainerBackgroundProcessor[StandardEngine[Catalina]]”中的异常 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.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957) 在 org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 在 org.apache.log4j.spi.LoggingEvent.(LoggingEvent.java:159) 在 org.apache.log4j.Category.forcedLog(Category.java:391) 在 org.apache.log4j.Category.log(Category.java:856) 在 org.slf4j.impl.Log4jLoggerAdapter.log(Log4jLoggerAdapter.java:602) 在 org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225) 在 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:336) 在 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.StandardContext.reload(StandardContext.java:4007) 在 org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425) 在 org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524) 在 java.lang.Thread.run(Thread.java:745)谢谢你:)
【问题讨论】:
-
我正在寻找一个类似的问题 - 请参阅 stackoverflow.com/questions/31211868/… - 并想问一下 log4j 或 log4j2 的配置是否与您发现的泄漏有关。
-
我从来没有解决过这个问题。但根据我的日志,可能是使用的 JDBC 驱动程序导致了问题。我不认为 log4j 配置是原因。
标签: eclipse spring-mvc spring-tool-suite