#java #jvm #daemon #shutdown
#java #jvm #демон #завершение работы
Вопрос:
У меня есть программа, которая достигла конца метода запуска spring boot, но она все еще не завершается. Вот список потоков, запущенных при просмотре в Eclipse Debug:
Вот что я вижу после приостановки потоков:
Вот дамп потока
Моя программа считывает данные из потока сообщений, который завершается должным образом, а также использует H2 db, который, как я полагаю, завершается, когда программа завершается нормально. Я не в состоянии понять, что мешает JVM завершить работу и как действовать в этой ситуации, увидев список запущенных потоков.
Комментарии:
1. Похоже, «Catalina-utility-1» и «container-0» заняты какими-то делами. Можете ли вы приостановить эти потоки и посмотреть, что происходит? Возможно, они поддерживают работоспособность вашей виртуальной машины; поток DestroyJavaVM сможет принудительно уничтожить потоки демонов без сожаления.
2. @NotaJD обновленный вопрос
3. Вомп, я неправильно выразился. Похоже, что DestroyJavaVM заботится о присоединении ко всем потокам, не относящимся к демонам, а сама виртуальная машина заботится о демонах. Помимо этого: делаете ли вы что-нибудь необычное с конфигурацией контейнера или конфигурацией DispatcherServlet?
4. Я не касался конфигурации контейнера или конфигурации сервлета диспетчера. будет интересно проверить, хотя.