22 Temmuz 2016 Cuma

WeakReference Sınıfı - GC'yi Engellemez

Giriş
Şu satırı dahil ederiz.
import java.lang.ref.WeakReference;
Not :SoftReference yazısına da bakabilirsiniz.

GC devreye girince WeakReference'ın sahip olduğu nesne silinir.

Tek nesneye weak reference tutar. Daha fazla nesneye weak reference tutmak için WeakHashMap kullanılır

constructor
Şöyle yaparız.
Object obj = new Object();
WeakReference<Object> ref = new WeakReference<>(obj);
get metodu
Örnek
Şöyle yaparız.
Object obj = ref.get();
if (obj != null) {...}
Örnek
Şöyle yaparız.
HashMap<Employee, EmployeeVal> map = new HashMap<Employee, EmployeeVal>();
WeakReference<HashMap<Employee, EmployeeVal>> aMap = 
  new WeakReference<HashMap<Employee, EmployeeVal>>(map);

map = null;

while (null != aMap.get()) {
  aMap.get().put(new Employee("Foo"),new EmployeeVal("Bar"));
  System.out.println("Size of aMap " + aMap.get().size());
  System.gc();
}

Hiç yorum yok:

Yorum Gönder