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