Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

Sorunuz mu var? Belki de çoktan soruldu..

1
Java'da strong, soft, and weak referanslar nedir?

Açık 1 Cevaplar 35 Gösterim Java
Java'da strong, soft ve weak referansları açıklayabilir misiniz?. Ne zaman, niye ve nasıl kullananılır?

1 cevap

0
Javada normal tanımladığın değişkenlerin tipleri strong reference (Türkçesine sağlam referans diyeyim (: ) oluyor. Örneğin:

Integer x;
Vector y;

Bunlar strong referance tipleri. Anlamı ne oluyor? Bir instance (sınıf-örneği) bir strong referance tarafından gösterliliyorsa bu instance çalışan ya da çalışacak olan GC (garbage-collector) tarafından temizlenemez, biryerlerde kullanılıyor anlamına gelir.

Weak referance ise aşağıdaki gibi tanımlanıyor.

WeakReference<StringBuilder> weakBuilder = new WeakReference<StringBuilder>(builder);

GC çalıştığı zaman bu instance hafızadan temizlenebiliyor. Bir yerden gösterilmesi bir sorun teşgil etmiyor. Bu weak referance kendi içinde ikiye ayrılıyor. Birisi soft diğeri de phantom refenrance. Anladığım kadarıyla soft = weak oluyor. Yani Soft demek direk weak demek. Bu tarz referance sahibi olan instance GC çalıştığı zaman siliniyor.

Phantom referance ise genelde hiç kullanılamıyormuş. Enteresan bir bilgi. Genel kullanım amacı olarak birşeyleri tetikleyip zamanlamasını almak gibi bir öneri var. Pratikte nasıl kullanırız pek emin olamadım.

Soft/weak referance için ise cache (önbellek) içine alabileceğimiz bilgiler için uygundur gibi görünüyor. Zaten GC çalıştığı zaman kendiliğinden hafızadan temizlenecek, bilgiler yeniden önbelleğe alınabilir.

İyi çalışmalar.
29 Haziran 2017 kenan (2,835 puan) cevapladı
...