Приложения Java могут использовать потоки ввода-вывода, сокеты или соединения с базой данных, которые должны быть закрыты, когда они больше не нужны.
Однако приложения могут быть завершены (например, путем уничтожения процесса). Будут ли в этом случае освобождены все использованные ресурсы? Кто их освободит: ОС или JRE?