免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
SoftReference的用法

SoftReference的語義就是當(dāng)內(nèi)存不夠用的時(shí)候,GC會(huì)回收SoftReference所引用的對(duì)象。所以,在memory sensitive的程序中將某些大型數(shù)據(jù)設(shè)置成SoftReference再合適不過了。

創(chuàng)建一個(gè)SoftReference:

Java代碼
 
  1. Object obj = new Object();     
  2. SoftReference softRef = new SoftReference(obj);     
  3. obj = null;    

 最后那句“obj = null”很重要。如果不將obj設(shè)置成null,那么new出來的Object就會(huì)有一個(gè)"strong reference",如果這樣,softRef就不能發(fā)揮作用了。

 

使用SoftReferene:

Java代碼
 
  1. Object obj2;     
  2. obj2 = sr.get();     
  3. if (obj2 == null// GC freed this     
  4. sr = new SoftReference(obj2 = new Object());  

 因?yàn)槭荢oftReference,所以有可能已經(jīng)被GC回收了,所以需要判斷sr.get()的返回值是否為null。如果是的話,就再重新new一個(gè)Object。這里的最后一行代碼也很有講究,比如,也許會(huì)這么寫:

Java代碼
 
  1. Object obj2;     
  2. obj2 = sr.get();     
  3. if (obj2 == null) {     
  4.     sr = new SoftReference(new Object());     
  5.     obj2 = sr.get();     
  6. }   

 這樣的問題就在于GC可能發(fā)生在"sr = new SoftReference(new Object());"和"obj2 = sr.get()"之間,那么obj2仍然有可能為null。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java中三個(gè)引用類SoftReference、WeakReference和PhantomReference的區(qū)別
Java常見的四種引用
Java 引用類型簡(jiǎn)述
Java 中的 Reference
對(duì)SoftReference、WeakReference和PhantomRefrence的...
詳解JVM的內(nèi)存管理機(jī)制
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服