Неожиданная смерть фонового потока [ContainerBackgroundProcessor [StandardEngine [Tomcat]]] - PullRequest
0 голосов
/ 27 апреля 2020

Я запускаю загрузочное приложение Spring в моей системе windows с 5 ГБ ОЗУ. Я ударил один из трех POST API приложения. Он принимает queryString в качестве параметра в requestBody и получает данные из postgres DB. OutofMemory ожидалось, так как dataSize огромен, но имеет значение

org. apache .catalina.core.ContainerBase $ ContainerBackgroundProcessor run SEVERE: неожиданная смерть фонового потока [ContainerBackgroundProcessor [StandardEngine [Tomcat]] java .lang.OutOfMemoryError: G C превышен предел накладных расходов

sun.rmi.transport.tcp.TCPTransport $ AcceptL oop executeAcceptLoop ПРЕДУПРЕЖДЕНИЕ: RMI TCP Accept-0: принять l oop для ServerSocket [addr = 0.0.0.0 / 0.0.0.0, localport = 51352] throws java .lang.OutOfMemoryError: G C превышен предел служебных данных

После этих ошибок приложение перестает отвечать на запросы. Я также анализировал использование кучи в VisualVM, G C немедленно очищал память кучи после того, как эти ошибки были выброшены (см. Прикрепленный скриншот), но почему размер кучи не достиг 5 ГБ, прежде чем выбрасывать память? В чем может быть причина вышеуказанных ошибок и возможное их исправление?

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...