淺談Java 中的引用類型
Java 中的引用類型:強引用、軟引用、弱引用和虛引用
強引用
如 Object object = new Object(),那 object 就是一個強引用,如果一個對象具有強引用,垃圾回收器就永遠不會回收它。
軟引用
軟引用用來描述一些還有用但非必需的對象。在內(nèi)存即將發(fā)生內(nèi)存溢出之前,會把這些對象列進回收范圍之中進行二次垃圾回收。如果這次回收還沒有足夠內(nèi)存,才會發(fā)生內(nèi)存溢出現(xiàn)象。
另:軟引用可用來實現(xiàn)內(nèi)存敏感的高速緩存。
弱引用
用來描述非必需的對象。被弱引用關(guān)聯(lián)的對象只能存活到下一次垃圾收集發(fā)生之前。當垃圾回收時,無論當前內(nèi)存是否足夠,都將回收被弱引用關(guān)聯(lián)的對象。
虛引用
最弱的一種引用關(guān)系。無法通過一個虛引用獲得一個對象實例;一個對象是否有虛引用,都不會對其生存周期構(gòu)成影響。
設(shè)置虛引用的唯一目的是在垃圾回收時收到一個系統(tǒng)通知。
虛引用與軟引用、弱引用的一個區(qū)別在于:虛引用必須和引用隊列(ReferenceQueue)聯(lián)合使用。當垃圾回收器準備回收一個對象時,如果發(fā)現(xiàn)它還有虛引用,會在垃圾回收之前,將該引用加入到與之對應(yīng)關(guān)聯(lián)的引用隊列中。程序通過判斷引用隊列中是否已經(jīng)加入了該虛引用,來了解被引用的對象是否將被垃圾回收。程序如果已經(jīng)發(fā)現(xiàn)該虛引用被加入了引用隊列中,就會將所引用的對象的內(nèi)存被回收之前采取必要的行動。
軟引用、弱引用的使用場景原理分析:實現(xiàn)內(nèi)存敏感的高速緩存。
相關(guān)文章
Java深入了解數(shù)據(jù)結(jié)構(gòu)之棧與隊列的詳解
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中的棧與隊列,在Java的時候,對于棧與隊列的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學習時候能夠有扎實的基礎(chǔ)能力。本文小編就來詳細說說Java中的棧與隊列,需要的朋友可以參考一下2022-01-01MyBatis-Plus中AutoGenerator的使用案例
AutoGenerator是MyBatis-Plus的代碼生成器,通過?AutoGenerator?可以快速生成?Pojo、Mapper、?Mapper?XML、Service、Controller?等各個模塊的代碼,這篇文章主要介紹了MyBatis-Plus中AutoGenerator的詳細使用案例,需要的朋友可以參考下2023-05-05SpringBoot 整合 Netty 多端口監(jiān)聽的操作方法
Netty提供異步的、基于事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框架,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò) IO 程序,是目前最流行的 NIO 框架,這篇文章主要介紹了SpringBoot 整和 Netty 并監(jiān)聽多端口,需要的朋友可以參考下2023-10-10