search
Giriş
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
879 gösterim
Java'da strong, soft ve weak referansları açıklayabilir misiniz?. Ne zaman, niye ve nasıl kullananılır?
Java kategorisinde 2.0k puan

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.
6.2k puan

İlgili sorular

0 oy
1 cevap 1.3K gösterim
1.3K gösterim
Java'da uygulama yazarken neden double neden BigDecimal kullanmalıyız? Farkı nedir?
4 Şubat 2021 Java kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 675 gösterim
675 gösterim
Lambda Expression ve Anonymous class arasındaki fark nedir? Lamda epression anonim bir fonksiyon diye biliyorum. Yani Anonim bir functional interface class'ı Hatta @FunctionalInterface kullanılıyor,.
30 Eylül 2020 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 1.3K gösterim
1.3K gösterim
Java programa dilinde Error ve Exception kavramları diğer dillerde de var mı öncelikle? İkinci olarak bu iki teri arasındaki temel ve genel farklar nelerdir?
1 Eylül 2018 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 1.8K gösterim
1.8K gösterim
Bir maven uygulamasını ayağa kaldırırken, JDK yerine JRE seçildiği için kalkmıyordu. Bu ikisinin ne farkı var acaba acıklayabilir misiniz?
18 Aralık 2016 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 9K gösterim
9K gösterim
Java'da string, integer vb. objelerde eşitlik kontrolü yapılırken kullanılan bu fonksiyonların farkı nedir? if (object1.equals(object2)){ } if (object1 == object2){ }
24 Aralık 2015 Java kategorisinde tolgacelik.art 2.0k puan sordu