十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章給大家分享的是有關JAVA 軟引用指的是什么的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

定義
軟引用是使用SoftReference創(chuàng)建的引用,強度弱于強引用,被其引用的對象在內(nèi)存不足的時候會被回收,不會產(chǎn)生內(nèi)存溢出。
說明
軟引用,顧名思義就是比較“軟”一點的引用。
當一個對象與GC Roots之間存在強引用時,無論何時都不會被GC回收掉。如果一個對象與GC Roots之間沒有強引用與其關聯(lián)而存在軟引用關聯(lián)時,那么垃圾回收器對它的態(tài)度就取決于內(nèi)存的緊張程度了。如果內(nèi)存空間足夠,垃圾回收器就不會回收這個對象,但如果內(nèi)存空間不足了,它就難逃被回收的厄運。
如果一個對象與GC Roots之間不存在強引用,但是存在軟引用,則稱這個對象為軟可達(soft reachable)對象。
在垃圾回收器沒有回收它的時候,軟可達對象就像強可達對象一樣,可以被程序正常訪問和使用,但是需要通過軟引用對象間接訪問,需要的話也能重新使用強引用將其關聯(lián)。所以軟引用適合用來做內(nèi)存敏感的高速緩存。
String s = new String("Frank"); // 創(chuàng)建強引用與String對象關聯(lián),現(xiàn)在該String對象為強可達狀態(tài)
SoftReference softRef = new SoftReference(s); // 再創(chuàng)建一個軟引用關聯(lián)該對象
s = null; // 消除強引用,現(xiàn)在只剩下軟引用與其關聯(lián),該String對象為軟可達狀態(tài)
s = softRef.get(); // 重新關聯(lián)上強引用