Sobes.tech
Back to questions
Junior — Middle
76

Что происходит при вызове метода finalize у объекта в Java и какие ресурсы он может освобождать?

Answer from AI

sobes.tech AI

В Java метод finalize() вызывается сборщиком мусора перед удалением объекта из памяти. Этот метод предназначен для освобождения неуправляемых ресурсов, которые не очищаются автоматически, например:

  • Закрытие файловых дескрипторов
  • Освобождение сетевых соединений
  • Очистка нативных ресурсов

Однако использование finalize() не рекомендуется, так как вызов не гарантируется и может привести к задержкам в освобождении ресурсов. Современные подходы предполагают использование try-with-resources или явное освобождение ресурсов.

Пример:

@Override
protected void finalize() throws Throwable {
    try {
        // освобождение ресурсов
    } finally {
        super.finalize();
    }
}