После завершения работы виртуальной машины, более или менее нормально (завершаются все потоки, не являющиеся демонами, вызывается System.exit или принимается сигнал уничтожения, например нажатие CTRL + C в терминале), или ненормально ( Вы отключаетесь через шнур питания или сигнал прерывания заставляет ядро просто жестко выйти из вашей виртуальной машины), все соединения TCP / IP go автоматически удаляются, и с этим соединение очищается.
Но до выхода из виртуальной машины вы не получаете никаких гарантий. Поведение преднамеренно не указано (как, например, вы должны закрыть их самостоятельно. Если вы этого не сделаете, гарантии не предоставляются), и то, что на самом деле происходит, зависит от состояния вашего компьютера (как это зависит от запуска g c и когда те go зависит от того, какая песня воспроизводится в вашем проигрывателе musi c до фазы луны), и от используемого драйвера JDB C.
Вы можете использовать инструменты lint и плагины IDE признать, что вы не закрываете свои соединения. Кроме того, ваш фрагмент более 10 лет устарел. Рекомендуемый и более простой способ убедиться, что ваше соединение не d ie, это использовать:
try (Connection con = ds.getConnection()) {
// use 'con' here
} // no need for a catch or finally.
Или использовать пулы соединений (например, HikariCP) вместе с абстракцией для создания JDB * 1016. * менее раздражающий, такой как JDBI или JOOQ.