java學習之路----什麼是java的弱引用
原文連結:http://blog.csdn.net/javastudyr/article/details/17205075
Java從1.2版本開始引入了4種引用,這4種引用的級別由高到低依次為:
強引用 > 軟引用 > 弱引用 > 虛引用
⑴強引用(StrongReference)
強引用是使用最普遍的引用。如果一個物件具有強引用,那垃圾回收器絕不會回收它。當記憶體空間不足,Java虛擬機器寧願丟擲OutOfMemoryError錯誤,使程式異常終止,也不會靠隨意回收具有強引用的物件來解決記憶體不足的問題。
⑵軟引用(SoftReference)
如果一個物件只具有軟引用,則記憶體空間足夠,垃圾回收器就不會回收它;如果記憶體空間不足了,就會回收這些物件的記憶體。只要垃圾回收器沒有回收它,該物件就可以被程式使用。軟引用可用來實現記憶體敏感的快取記憶體。
軟引用可以和一個引用佇列(ReferenceQueue)聯合使用,如果軟引用所引用的物件被垃圾回收器回收,Java虛擬機器就會把這個軟引用加入到與之關聯的引用佇列中。
⑶弱引用(WeakReference)
弱引用與軟引用的區別在於:只具有弱引用的物件擁有更短暫的生命週期。在垃圾回收器執行緒掃描它所管轄的記憶體區域的過程中,一旦發現了只具有弱引用的物件,不管當前記憶體空間足夠與否,都會回收它的記憶體。不過,由於垃圾回收器是一個優先順序很低的執行緒,因此不一定會很快發現那些只具有弱引用的物件。
弱引用可以和一個引用佇列(ReferenceQueue)聯合使用,如果弱引用所引用的物件被垃圾回收,Java虛擬機器就會把這個弱引用加入到與之關聯的引用佇列中。
⑷虛引用(PhantomReference)
“虛引用”顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用並不會決定物件的生命週期。如果一個物件僅持有虛引用,那麼它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。
虛引用主要用來跟蹤物件被垃圾回收器回收的活動。虛引用與軟引用和弱引用的一個區別在於:虛引用必須和引用佇列 (ReferenceQueue)聯合使用。當垃圾回收器準備回收一個物件時,如果發現它還有虛引用,就會在回收物件的記憶體之前,把這個虛引用加入到與之 關聯的引用佇列中。
相關文章
- Java中的弱引用Java
- Java學習之路 -- Java怎麼學?Java
- Java的強引用、軟引用、弱引用、虛引用Java
- 理解Java中的弱引用Java
- Java弱引用與WeakHashMapJavaHashMap
- 什麼是java四大引用?Java
- 什麼是java?為什麼大家都學習java技術?Java
- Java到底是什麼?學習java可以做什麼呢?Java
- Java中的弱引用詳解Java
- Java培訓:什麼是Java?為什麼大家都學習Java技術?Java
- 理解Java的強引用、軟引用、弱引用和虛引用Java
- 好程式設計師Java學習路線分享Java弱引用的理解與使用程式設計師Java
- 超硬核的Java工程師分享,什麼是Java?為什麼我要做Java,我是如何學習Java的?Java工程師
- 自學JAVA學習路線是什麼?Java
- Java/Android中的強引用、軟引用、弱引用、虛引用JavaAndroid
- Java是什麼_Java是做什麼的?Java
- Python 弱引用 學習Python
- java的強引用、軟引用、弱引用、幻象引用,引用佇列總結Java佇列
- Java中的四種引用方式(強引用、軟引用、弱引用、虛引用)Java
- JAVA基礎是什麼?java學習有哪些階段Java
- Java四種引用包括強引用,軟引用,弱引用,虛引用。Java
- java的學習方法有哪些?Java學什麼?Java
- java學習之路Java
- 學習java之路Java
- Java常見知識點彙總(⑲)——Java中的強引用、弱引用、軟引用、虛引用Java
- java培訓分享:學習java開發的優勢是什麼Java
- 強引用、軟引用、弱引用、幻象引用有什麼區別?
- 面試官問:ThreadLocal中的鍵為什麼是弱引用?面試thread
- Java引用型別解析:掌握強引用、軟引用、弱引用和幻象引用的妙用Java型別
- Java四大引用詳解:強引用、軟引用、弱引用、虛引用Java
- |轉| java學習之路Java
- java學習Java程式設計:什麼是守護執行緒?Java程式設計執行緒
- 十分鐘理解Java中的弱引用Java
- Java學習有什麼好的學習建議麼?Java
- Java和C有什麼區別,應該學習Java還是CJava
- 我的Java後端學習之路Java後端
- 學習java需要什麼基礎Java
- 好程式設計師Java學習路線Java bean是個什麼概念程式設計師JavaBean