java之垃圾回收和引用類型

僅站在應用開發角度簡單闡述整體概念

java中誰來回收垃圾?

java虛擬機啓動後會自動啓動一個有垃圾回收作用的線程,根據需要不定期進行垃圾回收

如何判斷一個實例應該被回收?

簡單來說通過一個引用計數器

回想String和StringBuffer的區別,其中說過改變一個String對象的實際過程是另創建一個String對象,再將引用指向新創建的實例上。注意,這時原來的實例引用數爲0成爲垃圾回收的對象。

即當垃圾回收線程發現一個引用數爲0的對象時就會回收它

而因爲人類現有計算機體系的複雜,引用又分爲很多類型

不同類型的引用有何區別?

強引用(StrongReference):顯式的把一個引用指向一個對象

某個對象只有強引用時,它就永遠不會被回收。

軟引用(SoftReference):可看做一種JVM的加速機制,比如達到當加載一個圖片後避免重複加載,將引用暫存在緩存中

某個對象只有軟引用時,當內存不夠時,會回收這個對象。

弱引用(WeakReference):指一些規範化映射,映射存在時當key和value實例不存在是引用自動被回收

某個對象只有弱引用時,當gc線程回收的時候,它一定會被回收。

虛引用(PlantomReference):提供更靈活的垃圾處理方式,和引用隊列一起使用

發佈了33 篇原創文章 · 獲贊 40 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章