У нас есть служба, развернутая на Tomcat 8. Обычно она работает нормально, но наблюдается, что иногда 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 and inputstream
, не закрыты?
- Также соединение HttpsURLC
con
не закрыто / отключено?
- Если так, то почему это не происходит каждый раз. На самом деле это наблюдается впервые более чем за пару месяцев.
- Я также видел, что OME было брошено ByteArray или чем-то в этом роде. Не уверен насчет этого. Просто не забудь что-то увидеть.
- Наряду с журналами было замечено следующее исключение:
Исключение в потоке "AsyncFileHandlerWriter - #######"
Я застрял в данный момент и беспокоюсь о том, что этот сценарий может повториться. Мне нужно найти основную причину для того же. Любая помощь или совет относительно этого были бы действительно полезны.