Sobes.tech
Junior — Middle

Java'da obyektda finalize usulini chaqirishda nima bo'ladi va u qanday resurslarni ozod qilishi mumkin?

sobes.tech AI

AIdan javob

Java tilida finalize() usuli, xotira bo'shatuvchi tomonidan ob'ekt o'chirilishidan oldin chaqiriladi. Bu usul, avtomatik ravishda tozalanmaydigan boshqarilmaydigan resurslarni bo'shatish uchun mo'ljallangan, masalan:

  • Fayl deskriptorlarini yopish
  • Tarmoq ulanishlarini bo'shatish
  • Nativ resurslarni tozalash

Ammo, finalize() foydalanish tavsiya etilmaydi, chunki uning chaqirilishi kafolatlanmagan va resurslarni bo'shatishda kechikishlarga olib kelishi mumkin. Zamonaviy yondashuvlar try-with-resources yoki resurslarni aniq bo'shatishni taklif qiladi.

Misol:

@Override
protected void finalize() throws Throwable {
    try {
        // resurslarni bo'shatish
    } finally {
        super.finalize();
    }
}