Java物件的強、軟弱、弱、虛引用
在JDK1.2以前的版本中,當一個物件不被任何變數引用,那麼程式就無法再使用這個物件。也就是說,只有物件處於可觸及狀態,程式才能使用它。這 就像在日常生活中,從商店購買了某樣物品後,假如有用,就一直保留它,否則就把它扔到垃圾箱,由清潔工人收走。
一般說來,如果物品已經被丟到垃圾箱,想再 把它撿回來使用就不可能了。
但有時候情況可不這麼簡單,你可能會碰到類似雞肋一樣的物品,食之無味,棄之可惜。這種物品現在已經無用了,保留它會佔空間,但是馬上扔掉它也不划算,因 為也許將來還會派用場。對於這樣的可有可無的物品,一種折衷的處理辦法是:假如家裡空間足夠,就先把它保留在家裡,假如家裡空間不夠,即使把家裡所有的垃圾清除,還是無法容納那些必不可少的生活用品,那麼再丟掉這些可有可無的物品。
從JDK1.2版本開始,將物件的引用分為四種級別,從而使程式能更靈活的控制對象的生命週期。這四種等級由高到低依序為:強引用、軟引用、弱引用和虛引用。
1.強引用
本章前文介紹的引用其實都是強引用,這是使用最普遍的引用。假如一個物件具有強烈引用,那就類似於必不可少的生活用品,垃圾回收器絕對不會回收它。當記憶體空 間不足,java虛擬機寧願拋出OutOfMemoryError錯誤,使程式異常終止,也不會靠隨意回收具有強引用的物件來解決記憶體不足問題。
2.軟引用(SoftReference)
假如一個物件只具有軟引用,那就類似於可有可物的生活用品。如果記憶體空間夠,垃圾回收器就不會回收它,假如記憶體空間不足了,就會回收這些物件的記憶體。只要垃圾回收器沒有回收它,該物件就可以被程式使用。軟引用可用於實現記憶體敏感的高速緩存。
軟引用可以和一個引用隊列(ReferenceQueue)聯合使用,假如軟引用所引用的物件被垃圾回收,Java虛擬機就會把這個軟引用加入到與之關聯的引用隊列中。
3.弱引用(WeakReference)
假如一個物件只具有弱引用,那就類似於可有可物的生活用品。弱引用與軟引用的區別在於:只具有弱引用的物件擁有更短暫的生命週期。在垃圾回收器線程掃描它 所管轄的內存區域的過程中,一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。不過,由於垃圾回收器是優先順序很低的線程, 因此不一定會很快發現那些只具有弱引用的物件。
弱引用可以和一個引用隊列(ReferenceQueue)聯合使用,假如弱引用所引用的物件被垃圾回收,Java虛擬機就會把這個弱引用加入到與之關聯的引用隊列中。
4.虛引用(PhantomReference)
"虛引用"顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用並不會決定對象的生命週期。假如一個物件只持有虛引用,那麼它就和沒有任何引用一樣,在任何時候都可能被垃圾回收。
虛引用主要用來追蹤物件被垃圾回收的活動。虛引用與軟引用和弱引用的一個區別在於:虛引用必須和引用隊列(ReferenceQueue)聯合使用。當 Roth 廢棄物回收器預備回收一個物件時,假如發現它還有虛引用,就會在回收物件的記憶體之前,把這個虛引用加入到與之關聯的引用佇列中。程式可以判定引用隊列中是 否已經加入了虛引用,來了解
被引用的物件是否將要被垃圾回收。程式假如發現某個虛引用已經被加入到引用隊列,那麼就可以在所引用的物件的記憶體被回收之前採取必要的行動。
在本書中,"引用"既可以當動詞,也可以當名詞,讀者應該根據上下文來區分"引用"的意思。
在java.lang.ref套件中提供了三個類別:SoftReference類別、WeakReference類別和PhantomReference類,它 分別代表軟引用、弱引用和虛引用。 ReferenceQueue類別表示引用佇列,它可以和這三種引用類別結合使用,以便追蹤Java虛擬機器回收所引用的對 象的活動。以下程式建立了一個String物件、ReferenceQueue物件和WeakReference物件:
//建立一個強引用
String str = new String("hello");
//建立引用佇列,
ReferenceQueue
//建立一個弱引用,它引用" hello"對象,且與rq引用隊列關聯
//
WeakReference
以上就是以上是以上Java物件的強、軟弱、弱、虛引用的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

隨著虛擬貨幣市場的蓬勃發展,選擇一個可靠的交易平台至關重要。本文推薦 10 個備受推崇的虛擬貨幣交易平台,涵蓋幣安、Coinbase、FTX、火幣、OKX、Gemini、Kraken、Bitstamp、Bittrex 和 KuCoin。在選擇交易平台時,安全性、流動性、費用、資產選擇和用戶體驗等因素至關重要。本文將為您提供權威參考,助您找到最適合您需求的交易平台。

最佳虛擬幣交易平台推薦: 幣安:交易量最大、支持貨幣最多、生態系統完善; OKX:交易引擎先進、交易工具豐富、衍生品交易平台強大; Gate.io:加密貨幣支持數量最多、用戶界面便捷、提供創新功能; Bitget:衍生品交易專注,社交交易功能領先、流動性強; Coinbase:美國最大、合規性最強、適合初學者。

2025 年十大最安全的虛擬貨幣交易所: 幣安; OKX; Gate.io; Bitget; 火幣; KuCoin; Kraken; Bybit; Crypto.com; Coinbase。

2025年十大虛擬幣交易App排名依次為:1. OKX,以安全性、豐富品種和便捷體驗領先;2. Binance,全球領先,交易量大,費用低;3. Gate.io,幣種豐富,費用低廉;4. Kraken,安全性高,合規性強;5. Coinbase,用戶友好,適合新手;6. Huobi Global,全球化平台,多語言支持;7. Crypto.com,獎勵計劃吸引人。

2025年香港數字貨幣交易app排行前十:OKX技術強、產品新;Binance全球領先、生態全;Gate.io幣種多、工具獨特;Kraken合規安全;Huobi經驗豐富;Coinbase界面易用;KuCoin創新活躍;Crypto.com生態全;Bitfinex專業;Gemini安全透明 。

本文介紹全球綜合排名較高的虛擬貨幣交易平台,包括幣安(Binance)、Gate.io、歐易 OKX、Coinbase、Kraken、Bitfinex、KuCoin、Bybit和火幣(Huobi)以及BitMEX等。這些平台在交易深度、用戶體驗、安全性、合規性等方面各有優勢,有的專注於幣幣交易,有的則擅長衍生品交易,滿足不同用戶的需求。 選擇合適的平台需根據自身交易經驗、風險承受能力和投資偏好綜合考慮。 點擊閱讀,了解更多關於這些頂級虛擬貨幣交易平台的詳細信息,助您安全高效地進行數字資產交易

2025 年,虛擬貨幣市場預計將繼續蓬勃發展,而領先的交易所則提供各種服務以滿足用戶需求。其中包括幣安,因其廣泛的交易對和低費用而備受矚目;火幣,以其流動性和安全措施而聞名;以及Coinbase,以其用戶友好性和適合初學者的法定貨幣支持而著稱。

在十大數字貨幣交易所應用程序中,排名前三的是:幣安(豐富的資產品種和先進的交易工具)、OKX(世界領先的加密貨幣衍生品交易平台)和 Gate.io(支持超過 1000 種數字貨幣交易)。選擇交易所應考慮安全性、交易品種、交易費用、用戶體驗、聲譽和社區等關鍵步驟。
