Tomcat在尝试发送HTTP请求时因java.lang.OutOfMemory错误而崩溃

Tomcat在尝试发送HTTP请求时因java.lang.OutOfMemory错误而崩溃,java,out-of-memory,tomcat8,Java,Out Of Memory,Tomcat8,我们在Tomcat8上部署了一个服务。它通常运行良好,但观察到tomcat有时会突然崩溃。今天,当它出现时,我发现存在以下日志: SEVERE org.apache.tomcat.util.net.NioEndpoint$Acceptor.run java.lang.OutOfMemoryError: Java Heap Space 我想,这是在服务试图点击POST请求时发生的。其代码如下所示: URL obj = new URL(url); HttpsURLConn

我们在Tomcat8上部署了一个服务。它通常运行良好,但观察到tomcat有时会突然崩溃。今天,当它出现时,我发现存在以下日志:

 SEVERE org.apache.tomcat.util.net.NioEndpoint$Acceptor.run 
       java.lang.OutOfMemoryError: Java Heap Space
我想,这是在服务试图点击POST请求时发生的。其代码如下所示:

  URL obj = new URL(url);
  HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
  con.setRequestMethod("POST");
  con.setRequestProperty("User-Agent", USER_AGENT);
  con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

  con.setDoOutput(true);
  DataOutputStream wr = new DataOutputStream(con.getOutputStream());
  wr.writeBytes(urlParameters);
  wr.flush();
  wr.close();

  int responseCode = con.getResponseCode();
  BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
  String inputLine;
  while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
  in.close();
雄猫坠机的原因可能是什么?是因为以下原因吗

  • outputstream和inputstream
    这样的大多数资源都没有关闭
  • HttpsURLConnection
    con
    也未关闭/断开
  • 如果是这样的话,那为什么它不是每次都发生。事实上,这是两个多月来首次观察到
  • 我还看到OME是ByteArray或类似的东西扔的。我不确定。记得看到什么
  • 除了日志之外,还可以看到以下异常: 线程“AsyncFileHandlerWriter-########”中出现异常

  • 我现在陷入困境,担心这种情况可能再次发生。我需要找到同样的根本原因。任何与此相关的帮助或建议都会非常有用

    将以下内容添加到jvm参数中:

    -Xms512m -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError
    
    下次发生错误时,您应该会在启动文件夹中看到一个*.hprof文件。使用档案器打开,我的收藏夹是和。这两种方法都将显示应用程序中堆的最大竞争者,以及线程数和资源使用情况


    希望这有帮助。

    是的。我会的。但问题是,这种情况是不可复制的,也不确定何时会再次发生。在那之前,你认为我的假设正确吗?我的Xms和Xmx都被设置为2GB@neerajdorleOOM是应用程序中可能出现的各种内存泄漏的顶点。您没有说明您发布的是客户端代码还是服务器端代码,因此很难最终回答您的问题。但随着时间的推移,如果Java无法恢复已分配的内存,可能会抛出OOM,但这不一定是由最后执行的堆栈引起的,它根本无法继续,因为其他东西正在填充堆。我忘了提到资源泄漏。您还应该使用statement@ThomasTimbul是的,没错。我粘贴的代码来自我在Tomcat上运行的服务,它试图访问其他一些Web服务。。。。