Java中的四種引用

Java中四種引用
  1. 強引用(StrongReference):最普遍的引用,如果一個對象具有強引用,那麼GC絕對不會回收它,當內存不足時候,Java虛擬機寧願OOM,使程序終止,也不會回收強引用的對象來解決內存不足問題
  2. 軟引用(SoftReference):如果一個對象只具有軟引用,那麼內存空間足夠就不回收它;如果內存不足就回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。軟引用可以用來實現內存敏感的高速緩存
  3. 弱引用(WeakReference):弱引用和軟引用的區別在於,只具有弱引用的對象擁有更短暫的生命週期。在垃圾回收器線程掃描它所管轄的內存區域的過程中,一旦發現只具有弱引用的對象,不管當前內存空間是否足夠,都會回收它的內存。不過,由於垃圾回收器線程是一個級別很低的線程,因此不一定很快發現那些只具有弱引用的對象
  4. 虛引用(PhantomReference),形同虛設,與其它幾個引用都不同,虛引用並不會決定對象的生命週期。如果一個對象僅持有虛引用,那麼它就和沒有任何引用一樣,任何時候都可以被回收。虛引用主要用來跟蹤對象被來及回收器回收的活動
    ;虛引用和弱引用的區別在於:虛引用必須(弱引用即軟引用可以,引用的對象被垃圾回收,Java虛擬機就會把這個弱引用加入到與之關聯的引用隊列中)和引用隊列聯合使用,當垃圾回收器準備回收一個對象時,就會在回收對象內存之前,把這個引用加入到與之關聯的引用隊列
    實例:
    在Handler中使用了WeakReference,一旦Activity銷燬了,再做異步的請求沒有什麼意義,內存泄漏的問題不允許存在,一旦gc發現,不管內存是否充足,處理掉。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章