Java 后台线程[ContainerBackgroundProcessor[StandardEngine[Tomcat]]意外死亡

Java 后台线程[ContainerBackgroundProcessor[StandardEngine[Tomcat]]意外死亡,java,spring-boot,tomcat,java-8,garbage-collection,Java,Spring Boot,Tomcat,Java 8,Garbage Collection,我正在windows系统中本地运行一个Spring boot应用程序,内存为5GB。我遇到了应用程序的三个POST API之一。它将queryString作为requestBody中的参数,并从postgres DB中获取数据。OutofMemory是预期的,因为数据量很大,但它是什么 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor运行 严重:后台线程意外死亡[ContainerBackgroundProce

我正在windows系统中本地运行一个Spring boot应用程序,内存为5GB。我遇到了应用程序的三个POST API之一。它将queryString作为requestBody中的参数,并从postgres DB中获取数据。OutofMemory是预期的,因为数据量很大,但它是什么

org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor运行 严重:后台线程意外死亡[ContainerBackgroundProcessor[StandardEngine[Tomcat]] java.lang.OutOfMemoryError:超出GC开销限制

sun.rmi.transport.tcp.tcptTransport$AcceptLoop executeAcceptLoop 警告:RMI TCP Accept-0:ServerSocket[addr=0.0.0.0/0.0.0.0,localport=51352]的Accept循环抛出 java.lang.OutOfMemoryError:超出GC开销限制

出现这些错误后,应用程序将变得无响应。我还在VisualVM中分析堆的使用情况,一旦抛出这些错误,GC会立即清除堆内存(请参阅附带的屏幕截图),但为什么堆大小在抛出内存之前没有达到5GB? 上述错误的原因可能是什么?可能的修复方法是什么

Exception in thread "http-nio-80-ClientPoller-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.HashMap$KeySet.iterator(Unknown Source)
    at java.util.HashSet.iterator(Unknown Source)
    at java.util.Collections$UnmodifiableCollection$1.<init>(Unknown Source)
    at java.util.Collections$UnmodifiableCollection.iterator(Unknown Source)
    at org.apache.tomcat.util.net.NioEndpoint$Poller.timeout(NioEndpoint.java:1013)
    at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:833)
    at java.lang.Thread.run(Unknown Source)
Apr 27, 2020 11:30:50 PM org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor run
SEVERE: Unexpected death of background thread [ContainerBackgroundProcessor[StandardEngine[Tomcat]]]
java.lang.OutOfMemoryError: GC overhead limit exceeded
        at org.apache.catalina.webresources.Cache.backgroundProcess(Cache.java:183)
        at org.apache.catalina.webresources.StandardRoot.backgroundProcess(StandardRoot.java:605)
        at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5582)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1388)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1360)
        at java.lang.Thread.run(Unknown Source)

Exception in thread "ContainerBackgroundProcessor[StandardEngine[Tomcat]]" java.lang.OutOfMemoryError: GC overhead limit exceeded
        at org.apache.catalina.webresources.Cache.backgroundProcess(Cache.java:183)
        at org.apache.catalina.webresources.StandardRoot.backgroundProcess(StandardRoot.java:605)
        at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5582)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1388)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1360)
        at java.lang.Thread.run(Unknown Source)
Apr 27, 2020 11:31:13 PM sun.rmi.transport.tcp.TCPTransport$AcceptLoop executeAcceptLoop
WARNING: RMI TCP Accept-0: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,localport=51352] throws
java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.net.NetworkInterface.getAll(Native Method)
        at java.net.NetworkInterface.getNetworkInterfaces(Unknown Source)
        at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(Unknown Source)
        at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source)
        at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Apr 27, 2020 11:31:58 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded] with root cause
java.lang.OutOfMemoryError: GC overhead limit exceeded
线程“http-nio-80-ClientPoller-0”java.lang.OutOfMemoryError中出现异常:超出了GC开销限制 位于java.util.HashMap$KeySet.iterator(未知源) 位于java.util.HashSet.iterator(未知源) 位于java.util.Collections$UnmodifiableCollection$1。(未知源) 位于java.util.Collections$UnmodifiableCollection.iterator(未知源) 位于org.apache.tomcat.util.net.NioEndpoint$Poller.timeout(NioEndpoint.java:1013) 位于org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:833) 位于java.lang.Thread.run(未知源) 2020年4月27日晚上11:30:50 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor运行 严重:后台线程意外死亡[ContainerBackgroundProcessor[StandardEngine[Tomcat]] java.lang.OutOfMemoryError:超出GC开销限制 位于org.apache.catalina.webresources.Cache.backgroundProcess(Cache.java:183) 位于org.apache.catalina.webresources.StandardRoot.backgroundProcess(StandardRoot.java:605) 位于org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5582) 位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1388) 位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392) 位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392) 位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1360) 位于java.lang.Thread.run(未知源) 线程“ContainerBackgroundProcessor[StandardEngine[Tomcat]]”java.lang.OutOfMemoryError中出现异常:超出了GC开销限制 位于org.apache.catalina.webresources.Cache.backgroundProcess(Cache.java:183) 位于org.apache.catalina.webresources.StandardRoot.backgroundProcess(StandardRoot.java:605) 位于org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5582) 位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1388) 位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392) 位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392) 位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1360) 位于java.lang.Thread.run(未知源) 2020年4月27日11:31:13下午sun.rmi.transport.tcp.tcptTransport$AcceptLoop executeAcceptLoop 警告:RMI TCP Accept-0:ServerSocket[addr=0.0.0.0/0.0.0.0,localport=51352]的Accept循环抛出 java.lang.OutOfMemoryError:超出GC开销限制 位于java.net.NetworkInterface.getAll(本机方法) 位于java.net.NetworkInterface.getNetworkInterfaces(未知源) 位于sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(未知源) 位于sun.rmi.transport.tcp.tcptTransport$AcceptLoop.executeAcceptLoop(未知源) 在sun.rmi.transport.tcp.tcpttransport$AcceptLoop.run处(未知源) 位于java.lang.Thread.run(未知源) 2020年4月27日晚上11:31:58 org.apache.catalina.core.StandardWrapper 严重:路径为[]的上下文中Servlet[dispatcherServlet]的Servlet.service()引发异常[Handler dispatch failed;嵌套异常为java.lang.OutOfMemoryError:超出GC开销限制],根本原因为 java.lang.OutOfMemoryError:超出GC开销限制

Hey@Mayank,这里有新闻吗?Hey@Mayank,这里有新闻吗?