介紹下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());
}
java 中軟引用和弱引用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
web 容器拿到spring 注入的對象
linfssay
2020-07-03 16:06:29
web項目中xml消息傳遞處理
linfssay
2020-02-23 11:01:40
filter 中用spring StopWatch 監控請求執行時間
linfssay
2020-02-23 11:01:29
java 關鍵字過濾
linfssay
2020-02-23 11:01:29
java虛擬機類型卸載相關
linfssay
2018-09-04 05:09:23
實現 ftp 文件/文件夾的上傳下載以及刪除
linfssay
2018-09-04 05:09:23
java Date 跨年時間
linfssay
2018-09-04 05:09:22
itext 5.3.0實現對pdf文件添加(文字和圖片)水印
linfssay
2018-09-04 05:09:22