当前位置: 首页 > 知识库问答 >
问题:

Spring工具套件:Tomcat server constant permgen

卞嘉许
2023-03-14

    SEVERE: Unexpected death of background thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
    java.lang.OutOfMemoryError: PermGen space
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at org.apache.log4j.spi.LoggingEvent.(LoggingEvent.java:159)
        at org.apache.log4j.Category.forcedLog(Category.java:391)
        at org.apache.log4j.Category.log(Category.java:856)
        at org.slf4j.impl.Log4jLoggerAdapter.log(Log4jLoggerAdapter.java:602)
        at org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:336)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardContext.reload(StandardContext.java:4007)
        at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425)
        at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524)
        at java.lang.Thread.run(Thread.java:745)

    Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at org.apache.log4j.spi.LoggingEvent.(LoggingEvent.java:159)
        at org.apache.log4j.Category.forcedLog(Category.java:391)
        at org.apache.log4j.Category.log(Category.java:856)
        at org.slf4j.impl.Log4jLoggerAdapter.log(Log4jLoggerAdapter.java:602)
        at org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:336)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardContext.reload(StandardContext.java:4007)
        at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425)
        at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524)
        at java.lang.Thread.run(Thread.java:745)

谢谢:)

共有1个答案

胡元忠
2023-03-14

实际上,您可以增加permgen空间,这至少会推迟outofmemoryerror:permgen空间。它将非常简单,只需添加(或增加(如果存在))一个类似于以下示例的参数,为permgen空间分配512M:

java -XX:MaxPermSize=512m your.package.YourClass

不过,根据您的描述,我相信您的应用程序包含类加载器泄漏,这是在重新部署期间发生的。如果我的信念是正确的,那么增加permgen空间只是推迟了不可避免的事情,而不是解决根本问题。要解决这个问题,您可以进行堆转储并分析内容,或者使用专门的工具,如Plumbr内存泄漏检测器。

完全披露,我与Plumbr有关联。

 类似资料:
  • 我试图在STS3.7.1中创建一个项目。当我尝试创建spring starter项目时,它给了我一个类似这样的错误... IOException:服务器返回URL的HTTP响应代码:403:HTTP://start.spring.io/starter。zip?name=hello-boot&groupid=org。test&artifactid=hello-boot&version=0.0.1-s

  • Selenium不仅仅是一个工具,而是一套软件,每个软件都有不同的方法来支持自动化测试。 它由四个主要组成部分组成,包括: Selenium集成开发环境(IDE) Selenium远程控制器(现已弃用) webdriver Selenium Grid 1. Selenium集成开发环境(IDE) Selenium IDE实现为Firefox扩展,在测试脚本上提供记录和回放功能。 它允许测试人员以H

  • 我最近在macOS High Sierra中安装了新的Spring工具套件4,但当我尝试运行Lombok的安装时,它找不到我的STS安装, 我按照以下步骤进行手动安装(将-javaagent添加到ini文件),但运气不好:https://www.edvpfau.de/sts-spring-tool-suite-4-mit-lombok/. 知道吗?

  • 当创建一个新的时,我没有看到一个Spring条目。请帮我修正这个错误!谢谢大家。

  • 我的问题是,无论是eclipse还是最新的Spring工具套件似乎都无法处理@_uu(lombok)。 使用以下内容 让eclipse在@__下面加上一个错误指示器和文本: 注释属性RequiredArgsConstructor的值。onConstructor必须是@lombok.RequiredArgsConstructor。AnyAnnotation注释 但是语法是正确的,并且maven是使用

  • npm 全名为 Node Package Manager,是 Node.js 的套件(package)管理工具, 类似 Perl 的 ppm 或 PHP 的 PEAR 等。安装 npm 后,使用 npm install module_name 指令即可安装新套件,维护管理套件的工作会更加轻鬆。 npm 可以让 Node.js 的开发者,直接利用、扩充线上的套件库(packages registry