java 中軟引用和弱引用

介紹下java中的軟,弱引用.
首先是軟引用java.lang.ref.SoftReference,
它通常用來設計緩存,特點是 被 Soft Reference 指到的對象,一直要到 JVM 內存不足時且 沒有 Direct Reference 時纔會清除,SoftReference 是用來設計 object-cache 之用的。因此在內存足夠的時候,他們通常不被回收。另外,這些引用對象還能保證在Java  拋出OutOfMemory異常之前,被設置爲null。他可以用於實現一些常用資源的緩存,實現Cache的功能,保證最大限度的使用內存而不引起OutOfMemory異常
   A obj = new A();
    SoftRefenrence sr = new SoftReference(obj);

     if(sr!=null){
        obj = sr.get();
    }else{
        obj = new A();
        sr = new SoftReference(obj);
    }

弱引用:
  如果一個對象只具有弱引用,那就類似於可有可物的生活用品。弱引用與軟引用的區別在於:只具有弱引用的對象擁有更短暫的生命週期。在垃圾回收器線程掃描它 所管轄的內存區域的過程中,一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。不過,由於垃圾回收器是一個優先級很低的線程, 因此不一定會很快發現那些只具有弱引用的對象。
弱引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果弱引用所引用的對象被垃圾回收,Java虛擬機就會把這個弱引用加入到與之關聯的引用隊列中。

A obj = new A(); 

   WeakReference wr = new WeakReference(obj); 
    obj = null; 

     //等待一段時間,obj對象就會被垃圾回收 
  

  if (wr.get()==null) {  
   

  System.out.println("obj 已經被清除了 ");  

   
  } else {  

 System.out.println("obj 尚未被清除,其信息是 "+obj.toString()); 

  } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章