Saya telah membaca banyak pertanyaan tentang Java pemula finalize()
dan merasa agak membingungkan bahwa tidak ada yang benar-benar menjelaskan bahwa menyelesaikan () adalah cara yang tidak dapat diandalkan untuk membersihkan sumber daya. Saya melihat seseorang berkomentar bahwa mereka menggunakannya untuk membersihkan Connections, yang benar-benar menakutkan karena satu-satunya cara untuk sedekat dengan jaminan bahwa Koneksi ditutup adalah dengan mengimplementasikan try (catch) akhirnya.
Saya tidak bersekolah di CS, tetapi saya telah memprogram di Jawa secara profesional selama hampir satu dekade sekarang dan saya belum pernah melihat ada yang menerapkan finalize()
sistem produksi. Ini masih tidak berarti bahwa itu tidak memiliki kegunaannya, atau bahwa orang yang telah bekerja dengan saya telah melakukannya dengan benar.
Jadi pertanyaan saya adalah, kasus penggunaan apa yang ada untuk implementasi finalize()
yang tidak dapat ditangani dengan lebih andal melalui proses lain atau sintaksis dalam bahasa?
Harap berikan skenario khusus atau pengalaman Anda, cukup mengulangi buku teks Java, atau menyelesaikan penggunaan yang dimaksudkan tidak cukup, karena bukan maksud pertanyaan ini.
finalize()
. Namun, kode pustaka platform , seperti SocketInputStream
, yang mengelola sumber daya asli atas nama penelepon, melakukan hal itu untuk meminimalkan risiko kebocoran sumber daya (atau menggunakan mekanisme setara, seperti PhantomReference
, yang ditambahkan kemudian.) Jadi ekosistem membutuhkannya , meskipun 99,9999% pengembang tidak akan pernah menulis satu pun.