Java'da bulunan strong,weak,soft ve phantom reference türleri arasındaki temel farklar nelerdir, hangisi ne gibi durumlarda tercih edilmelidir?

soruldu: 14 Haz '12, 02:28

nht's gravatar image

nht
95651720
cevap kabul oranı: 33%

değiştirildi: 14 Haz '12, 03:54

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Strong-References : Bu bizim hergün kullandigimiz Reference türü. Bir nesneye böyle bir reference varsa, GC onu silemez.

        Point point = new Point();
        System.gc();
        Thread.sleep(1000);
        System.out.println(point);

Out : java.awt.Point[x=0,y=0]

Weak-References : Bu zayif bir Reference dir ve gücü, bagli oldugu Nesneye GC den korumaya yetmez. GC o nesneyi hemen siler, eger bu nesneye baska bir Strong-Reference yoksa. Bir WeakReference java da WeakReference, WeakHashMap, WeakLink, .. yardimiyla olusturulur ve get() - Methodu, reference edilen nesneyi veriri. Eger bu nesne silinirse GC tarafindan ozaman null geri verir.

Assagidaki örnekte, GC weakPoint reference nin gösterdigi Point nesnesini hemen siler, cünkü bir baska bir Strong-Reference yoktur bu nesneye. Oyüzden get()-Methodu null geri verir.

       WeakReference<Point> weakPoint = new WeakReference<Point>(new Point());
       System.gc();
       Thread.sleep(1000);
       System.out.println(weakPoint.get());

Out : null

Soft-References : Bu reference türü Weak-Reference den biraz daha kuvvetlidir. GC bu reference ait nesneleri duruma göre siler. Örnegin bellek de yere ihtiyac oldugunda.

Phantom-References : Bu reference okadar zayiftir ki , get()-Methodu herzaman null degerini verir. Bu reference yardimiyla bir nesnenin, gercektende bellekten fiziksel olarak yok edildigi kontrol edilir.

Elimden geldigince aciklamaya calistim, umarim faydasi olur. Ancak mesele okadar karisik ki, assagidaki linkler belki faydali olabilir.

http://weblogs.java.net/blog/2006/05/04/understanding-weak-references

http://www.rallydev.com/engblog/2012/01/10/java-references-from-strong-to-soft-to-weak-to-phantom/

permanent link

cevaplandı: 15 Haz '12, 03:01

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,076

Soruldu: 14 Haz '12, 02:28

Görüntüleme: 945 kez

Son güncelleme: 15 Haz '12, 03:01

powered by BitNami OSQA