Neden hiç sonuçlandırmak uygulamak istiyorum)?
Sürekli okuyorum üzerinden bir sürü çaylak Java soruları finalize() ve bulmak biraz şaşırtıcı olan hiç kimse gerçekten yapılmış düz olan finalize() güvenilmez bir şekilde temizlemek kaynakları. Gördüm biri yorum kullanırlar bunu temizlemek Bağlantıları, ki bu oldukça korkutucu bu yana tek yolu, gelin olarak kapatmak için bir garanti bir Bağlantısı kapalı olduğu için uygulamak deneyin (yakalamak) sonunda.
CS öğrenmişti. ama Java kapatmak için on yıldır profesyonel olarak şimdi programlama yapıyorum ve kimseye sonuçlandırmak uygulamak gördüm() bir üretim sistemi hiç. Bunu hala kullanan yok, ya da beraber çalıştığım insanlar doğru yapıyor anlamına gelmez.
Benim sorum, kullanım durumları sonuçlandırmak uygulamak için ne var() daha güvenilir bir çözüm ile ele alınması ya da dil içinde sözdizimi?
Lütfen belirli senaryolar veya deneyimi, sadece Java bir kitabı tekrar sağlanan, ya da sonuçlandırmak kullanım amacı değildir ve bu sorunun amacı değildir.
CEVAP
Bir nesne bir dış kaynak holding (soket, dosya, vb) için bir koruyucu olarak kullanabilirsin. Yakın uygulamak() denmesi gereken yöntem ve belge.
Finalize uygulamak() yakın() yapılmadı tespit ederseniz işleniyor. Belki bir bebek arabası arayan sonrası temizlik olduğuna işaret stderr için terk etti.
Sıradışı/hatalı bir durumda ekstra güvenlik sağlar. Her arayan doğru denemek yapmak için gitmiyor {} finally {} her zaman bir şeyler. Talihsiz, ama gerçek, pek çok ortamda.
Nadiren gerekli olduğuna katılıyorum. Ve yorumların işaret ettiği gibi, GC yükü ile birlikte geliyor. "Kemer" uzun süren bir uygulama güvenlik. jartiyer eğer ihtiyacınız varsa kullanın
't neden C# Statik Yöntemler bir ...
Neden Apple ARK altında singleton dese...
Bir tamsayı değişmezi atmak istiyorum ...
Neden c İCloneable uygulamak gerekir#?...
Neden ReSharper kullanmak istiyorum &#...