Junior — Middle
Czy możesz wyjaśnić, co się dzieje podczas wywołania metody finalize w Java i w jakich przypadkach jest ona wywoływana?
sobes.tech AI
Odpowiedź od AI
W Javie metoda finalize() jest wywoływana przez garbage collector przed usunięciem obiektu z pamięci. Jej zadaniem jest zwolnienie zasobów, które nie są zarządzane przez JVM, takich jak zamykanie plików czy połączeń sieciowych.
Jednak wywołanie finalize() nie jest gwarantowane i może nastąpić z opóźnieniem lub wcale, dlatego nie zaleca się na nim polegać w celu zwalniania zasobów.
Przykład użycia:
@Override
protected void finalize() throws Throwable {
try {
// Zwolnienie zasobów
} finally {
super.finalize();
}
}
W nowoczesnych wersjach Javy zaleca się korzystanie z konstrukcji try-with-resources lub jawne zamykanie zasobów, zamiast polegać na finalize().