Tomcat在尝试发送HTTP请求时因java.lang.OutOfMemory错误而崩溃
我们在Tomcat8上部署了一个服务。它通常运行良好,但观察到tomcat有时会突然崩溃。今天,当它出现时,我发现存在以下日志: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
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
这样的大多数资源都没有关闭con
也未关闭/断开李>
我现在陷入困境,担心这种情况可能再次发生。我需要找到同样的根本原因。任何与此相关的帮助或建议都会非常有用 将以下内容添加到jvm参数中:
-Xms512m -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError
下次发生错误时,您应该会在启动文件夹中看到一个*.hprof文件。使用档案器打开,我的收藏夹是和。这两种方法都将显示应用程序中堆的最大竞争者,以及线程数和资源使用情况
希望这有帮助。是的。我会的。但问题是,这种情况是不可复制的,也不确定何时会再次发生。在那之前,你认为我的假设正确吗?我的Xms和Xmx都被设置为2GB@neerajdorleOOM是应用程序中可能出现的各种内存泄漏的顶点。您没有说明您发布的是客户端代码还是服务器端代码,因此很难最终回答您的问题。但随着时间的推移,如果Java无法恢复已分配的内存,可能会抛出OOM,但这不一定是由最后执行的堆栈引起的,它根本无法继续,因为其他东西正在填充堆。我忘了提到资源泄漏。您还应该使用statement@ThomasTimbul是的,没错。我粘贴的代码来自我在Tomcat上运行的服务,它试图访问其他一些Web服务。。。。