Вопрос по java – Освобождаются ли ресурсы, используемые приложением Java, после его завершения?

2

Приложения Java могут использовать потоки ввода-вывода, сокеты или соединения с базой данных, которые должны быть закрыты, когда они больше не нужны.

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

Я думаю, что они будут освобождены библиотеками, используемыми для доступа к ресурсам, и если этого не произойдет, то JRE. Hassan
Это очень широкий вопрос. Все, что инициализируется JVM, будет освобождено после завершения процесса, но это не гарантирует, что другой конец соединений (например) освободит их ресурсы. Nathaniel Ford

Ваш Ответ

2   ответа
2

должным образом, произойдет следующее:

at runtime: the JVM will attempt during the duration of your program to close open streams if they're are seemingly unused (during garbage collection cycles), at your program's termination point: the JVM should close open streams of all kinds left open by your program, at the JVM's process termination point: the operating system will take care of releasing anything that hasn't been properly released by the JVM when it exists (hopefully, or this OS has some serious issues...).

Как упомянул Вулкан, ничто из этого не гарантирует, что с ними правильно обращаются на другом конце, очевидно.

Обратите внимание, что третий пункт является довольно общим: большинство операционных систем позаботятся об этом, и это не относится к внутренним компонентам платформы Java. Речь идет об ОС, управляющей своими процессами и ресурсами самостоятельно.

More Info

Смотрите также:

Cleanup of resources on an abnormal Exit, also on StackOverflow How do I implement graceful termination in Java Java Theory and Practice: Good Housekeeping Practices, at the IBM Developer Series
4

однако это не гарантирует, что другой конец также освободит ресурс, поэтому явное закрытие ресурсов отвечает интересам каждого программиста.

В Java 7 существует альтернатива явному закрытию потоков, называемая try-resource & quot; оператор & quot ;, которая эквивалентна закрытию ресурса вfinally блок после попытки блока. Больше информации об этом можно найтиВот.

Похожие вопросы