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
+1 oy
63 gösterim
Java'da strong, soft ve weak referansları açıklayabilir misiniz?. Ne zaman, niye ve nasıl kullananılır?
Java kategorisinde (1.6k puan) sordu

1 cevap

0 oy
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.
(3.1k puan) cevapladı

İlgili sorular

0 oy
1 cevap 282 gösterim
282 gösterim 18 Aralık 2016 Java kategorisinde tolga (1.6k puan) sordu
0 oy
1 cevap 1.5k gösterim
0 oy
1 cevap 22 gösterim
22 gösterim 15 Ocak Java kategorisinde erkanerkisi (207 puan) sordu
0 oy
2 cevap 21 gösterim
0 oy
3 cevap 34 gösterim
...