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();
}
}