Sobes.tech
Junior — Middle

Какво се случва при извикване на метода finalize върху обект в Java и какви ресурси може да освободи?

sobes.tech AI

Отговор от AI

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

  • Затваряне на файлови дескриптори
  • Освобождаване на мрежови връзки
  • Почистване на нативни ресурси

Въпреки това, използването на finalize() не се препоръчва, тъй като неговото извикване не е гарантирано и може да доведе до забавяне при освобождаването на ресурсите. Модерните подходи препоръчват използването на try-with-resources или явното освобождаване на ресурсите.

Пример:

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