Из-за какой-то ошибки мое приложение потребляет слишком много памяти, а пространство кучи заканчивается.
Однако вместо сбоя запросов я получаю бесконечное зависание и только следующую ошибку в консоли:
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message can't create name string at JPLISAgent.c line: 826
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-nio-8090-ClientPoller"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Catalina-utility-2"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Catalina-utility-1"
Почему запросы зависают и не перестают работать? Является ли единственное решение (кроме того, что сначала не хватает памяти) - убить службу? (Он работает в контейнере, поэтому он будет перезапущен)
Мой код для отключения службы:
static class GlobalThreadExceptionHandler implements UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
logger.error(String.format("Caught unhandled exception in thread %s", thread), throwable);
Runtime.getRuntime().halt(137);
}
}
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new GlobalThreadExceptionHandler());
...
}
(System.exit()
также зависал)
I использую Java 11 с версией Spring Boot 2.1.6