強(qiáng)引用和弱引用的區(qū)別 強(qiáng)引用和弱引用使用規(guī)范?
強(qiáng)引用和弱引用使用規(guī)范?[1強(qiáng)引用特點(diǎn):Obj在我們的典型代碼中object Obj=new object()是強(qiáng)引用。與關(guān)鍵字new創(chuàng)建的對象關(guān)聯(lián)的引用是強(qiáng)引用。當(dāng)JVM內(nèi)存空間不足時,JVM寧愿拋
強(qiáng)引用和弱引用使用規(guī)范?
[1強(qiáng)引用
特點(diǎn):Obj在我們的典型代碼中object Obj=new object()是強(qiáng)引用。與關(guān)鍵字new創(chuàng)建的對象關(guān)聯(lián)的引用是強(qiáng)引用。當(dāng)JVM內(nèi)存空間不足時,JVM寧愿拋出outofmemoryerror(OOM)使程序異常終止,也不愿回收具有強(qiáng)引用的“活動”對象來解決內(nèi)存不足的問題。對于普通對象,如果沒有其他引用關(guān)系,只要它超出引用的范圍或顯式地將相應(yīng)的(強(qiáng))引用賦值為null,就可以對其進(jìn)行垃圾收集。垃圾收集的具體時間取決于垃圾收集策略。
2弱引用
弱引用由WeakReference類實(shí)現(xiàn)。弱引用的生命周期比軟引用短。垃圾回收器線程在掃描其管轄的內(nèi)存區(qū)域的過程中,一旦發(fā)現(xiàn)弱引用對象,無論當(dāng)前內(nèi)存空間是否足夠,都會回收其內(nèi)存。由于垃圾收集器是一個低優(yōu)先級的線程,因此不需要快速回收弱引用對象。弱引用可以與引用隊列結(jié)合使用。如果弱引用引用的對象被垃圾收集,Java虛擬機(jī)將把弱引用添加到與其關(guān)聯(lián)的引用隊列中。
應(yīng)用場景:弱應(yīng)用程序也可用于內(nèi)存敏感緩存。
弱引用是什么?
在計算機(jī)編程中,弱引用與強(qiáng)引用相對,強(qiáng)引用指的是不能保證被引用對象不會被垃圾收集器回收的引用。如果一個對象只被弱引用引用,它被認(rèn)為是不可訪問的(或弱可訪問的),因此可以在任何時候被回收。一些具有垃圾收集機(jī)制的語言,如Java、C#、python、Perl、LISP等,在不同程度上支持弱引用。