Ben çaylak Java soruları bir sürü üzerinden okuyordum finalize()
ve kimsenin gerçekten kesin hale getirdiğini şaşkınlık buluyorum () sonlandırmak () kaynakları temizlemek için güvenilir olmayan bir yoludur. Birinin Bağlantıları temizlemek için kullandığını yorumladığını gördüm, bu gerçekten korkutucu çünkü bir Bağlantı'nın kapalı olduğunu garanti etmenin tek yolu sonunda denemek (yakalamak) uygulamaktır.
CS'de eğitim görmedim, ancak Java'da profesyonel olarak on yıldan fazla bir süredir programlıyorum ve hiç kimsenin finalize()
bir üretim sisteminde uygulandığını hiç görmedim . Bu hala kullanımlarının olmadığı veya birlikte çalıştığım insanların doğru yaptığı anlamına gelmez.
Benim sorum şu finalize()
ki, başka bir işlem veya dil içindeki sözdizimi yoluyla daha güvenilir bir şekilde ele alınamayan uygulama için hangi kullanım durumları var ?
Lütfen belirli bir senaryo ya da deneyiminizi sağlayın, sadece bir Java ders kitabını tekrarlayın ya da sonlandırmanın amaçlanan kullanımı bu sorunun amacı gibi yeterli değildir.
finalize()
. Bununla birlikte, yerel kaynakları arayan adına yöneten platform kitaplığı kodu , SocketInputStream
kaynak kaçağı riskini en aza indirmeye çalışır (veya PhantomReference
daha sonra eklenen gibi eşdeğer mekanizmaları kullanır ). , geliştiricilerin% 99,9999'u asla bir tane yazmayacak olsa da.