Sobes.tech
Junior — Middle

Co się dzieje, gdy wywołujemy metodę finalize na obiekcie w Java i jakie zasoby może zwolnić?

sobes.tech AI

Odpowiedź od AI

W języku Java metoda finalize() jest wywoływana przez zbieracza śmieci przed usunięciem obiektu z pamięci. Metoda ta służy do zwalniania niezarządzanych zasobów, które nie są automatycznie czyszczone, na przykład:

  • Zamknięcie deskryptorów plików
  • Zwolnienie połączeń sieciowych
  • Czyszczenie zasobów natywnych

Jednak używanie finalize() nie jest zalecane, ponieważ wywołanie nie jest gwarantowane i może powodować opóźnienia w zwalnianiu zasobów. Nowoczesne podejścia sugerują użycie try-with-resources lub jawne zwalnianie zasobów.

Przykład:

@Override
protected void finalize() throws Throwable {
    try {
        // zwolnienie zasobów
    } finally {
        super.finalize();
    }
}