Java的強引用、軟引用、弱引用和虛引用詳解。

Java的強引用、軟引用、弱引用和虛引用

      • 1. 強引用
      • 2. 軟引用
      • 3. 弱引用
      • 4. 虛引用
  • 總結

??Java的強引用、軟引用、弱引用和虛引用可以用來標識GC時判斷對象是否達到回收的條件,下面結合Java代碼看看這四類引用吧。

1. 強引用

是最普通的引用方式,通過new關鍵字創建對象時所使用的引用。只要強引用存在,垃圾回收器就不會回收對象。代碼如下:

Object obj = new Object(); // 強引用

2. 軟引用

內存不足時,垃圾回收器會回收軟引用指向的對象。可以通過SoftReference類來創建軟引用。代碼如下:

SoftReference<Object> softRef = new SoftReference<>(new Object());
Object obj = softRef.get(); // 獲取軟引用指向的對象

3. 弱引用

垃圾回收器在下一次回收時,無論內存是否充足,都會回收弱引用指向的對象。可以通過WeakReference類來創建弱引用。代碼如下:

WeakReference<Object> weakRef = new WeakReference<>(new Object());
Object obj = weakRef.get(); // 獲取弱引用指向的對象

4. 虛引用

虛引用主要用于跟蹤對象被垃圾回收器回收的活動,不能通過虛引用訪問對象。可以通過PhantomReference類來創建虛引用。代碼如下:

ReferenceQueue<Object> queue = new ReferenceQueue<>();
PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), queue);
Object obj = phantomRef.get(); // 獲取虛引用指向的對象(始終返回null)

Java4種引用的級別由高到低依次為:強引用 > 軟引用 > 弱引用 > 虛引用



總結

?? 以上,我們了解了關于Java對象的引用級別:強引用 > 軟引用 > 弱引用 > 虛引用


上一篇 Java SPI機制詳解
記得點贊收藏哦!!!
下一篇 理解Java的自定義類加載器ClassLoader看這一篇就夠了!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714840.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714840.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714840.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

外貿業務員沒客戶的7大原因+解決辦法!

業務員沒有客戶&#xff0c;就是無源之水&#xff0c;無本之木&#xff0c;這自然也就沒有業績。那些吃空餉的業務員&#xff0c;遲早會拖垮公司。所以不管是什么原因導致的業務員沒客戶&#xff0c;都要一一查驗清楚。七個業務員沒有客戶的原因&#xff0c;七種對策&#xff0…

華為數通方向HCIP-DataCom H12-821題庫(多選題:21-40)

第21題 管理員在配置 VRRP 時,下面哪些不是必須配置的? A.搶占模式 B.搶占延時 C.虛擬IP 地址 D.虛擬路由器的優先級 【參考答案】ABD 【答案解析】 VRRP的作用之一是提供一個虛擬的IP地址,用作默認網關,用來實現冗余和故障轉移。因此,配置虛擬IP地址是必須的。華為設備vr…

hcip交換

交換機功能 無限的傳輸距離——識別&#xff0c;重寫電信號&#xff08;幀&#xff09;保證信息完整徹底解決了沖突二層單播——MAC地址表提高端口密度 單播地址&#xff1a;MAC地址第一個字節第8位為0 組播地址&#xff1a;MAC地址第一個字節第8位為1 廣播地址&#xff1a;全1…

滲透測試靶場環境搭建

1.DVWA靶場 DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一個用來進行安全脆弱性鑒定的PHP/MySQL Web應用&#xff0c;包含了OWASP TOP10的所有攻擊漏洞的練習環境&#xff0c;旨在為安全專業人員測試自己的專業技能和工具提供合法的環境&#xff0c;同時…

Mybatis批量更新對象數據的兩種方法

說明&#xff1a;遇到一次需要批量修改對象的場景。傳遞一個對象集合&#xff0c;需要根據對象ID批量修改數據庫數據&#xff0c;使用的是MyBatis框架。查了一些資料&#xff0c;總結出兩種實現方式。 創建Demo 首先&#xff0c;創建一個簡單的Demo&#xff1b; &#xff08…

SpringBoot+Jwt+Redis

大致流程&#xff1a; 參照&#xff1a; 史上最全面的基于JWT token登陸驗證_完整的基于jwt的登陸認證-CSDN博客 springboot整合JWTRedis_springboot jwt redis-CSDN博客

鴻蒙Harmony應用開發—ArkTS聲明式開發(通用屬性:浮層)

設置組件的遮罩文本。 說明&#xff1a; 從API Version 7開始支持。后續版本如有新增內容&#xff0c;則采用上角標單獨標記該內容的起始版本。 overlay overlay(value: string | CustomBuilder, options?: { align?: Alignment; offset?: { x?: number; y?: number } })…

劍指offer面試題28:對稱的二叉樹

#試題28&#xff1a;對稱的二叉樹 題目&#xff1a; 請設計一個函數判斷一棵二叉樹是否 軸對稱 。 示例 1&#xff1a; 輸入&#xff1a;root [6,7,7,8,9,9,8] 輸出&#xff1a;true 解釋&#xff1a;從圖中可看出樹是軸對稱的。示例 2&#xff1a; 輸入&#xff1a;root …

【合宙ESP32C3 Arduino開發】第四篇:TFT_eSPI 驅動 合宙Air101 ST7735 LCD 顯示普通時鐘,模塊化編程

忘記過去&#xff0c;超越自己 ?? 博客主頁 單片機菜鳥哥&#xff0c;一個野生非專業硬件IOT愛好者 ???? 本篇創建時間 2024-03-02???? 本篇更新時間 2024-03-02??&#x1f389; 歡迎關注 &#x1f50e;點贊 &#x1f44d;收藏 ??留言&#x1f4dd;&#x1f64f;…

白話大模型② | 如何提升AI分析的準確性?

白話大模型系列共六篇文章&#xff0c;將通俗易懂的解讀大模型相關的專業術語。本文為第二篇&#xff1a;如何提升AI分析的準確性&#xff1f; 作者&#xff1a;星環科技 人工智能產品部 面對AI分析落地時的數量化、準確性、泛化性等問題&#xff0c;讓我們稍微深入了解下當前…

pycharm專業版本的安裝

一 、到官網下載對應的pycharm安裝包 也可以把安裝軟件&#xff08;用物理機下載到共享文件夾&#xff09; 然后進入Ubuntu系統把下載大的安裝包剪貼到目標路徑 1 在ubuntu中創建一個用來存放pycharm安裝包的文件夾 rootzmq-virtual-machine:/home/zmq/Desktop# mkdir pycha…

京東云硬鋼阿里云:承諾再低10%

關注盧松松&#xff0c;會經常給你分享一些我的經驗和觀點。 阿里云剛剛宣布史上最大規模的全線產品降價20%&#xff0c;這熱度還沒過&#xff0c;京東云當晚就喊話&#xff1a;“隨便降、比到底!&#xff0c;全網比價&#xff0c;擊穿低價&#xff0c;再低10%”&#xff0c;并…

[技巧]Arcgis之圖斑四至范圍批量計算

ArcGIS圖層&#xff08;點、線、面三類圖形&#xff09;四至范圍計算 例外一篇介紹&#xff1a;[技巧]Arcgis之圖斑四至點批量計算 說明&#xff1a;如下圖畫出來的框&#xff08;范圍標記不是很準&#xff09; &#xff0c;圖斑的x最大和x最小&#xff0c;y最大&#xff0c;…

專為大模型訓練優化,百度集合通信庫 BCCL 萬卡集群快速定位故障

1 集合通信對分布式訓練至關重要 在分布式訓練中&#xff0c;每一塊 GPU 只負責處理部分模型或者數據。集群中不同 GPU 之間通過集合通信的方式&#xff0c;完成梯度同步和參數更新等操作&#xff0c;使得所有 GPU 能夠作為一個整體加速模型訓練。 如果有一塊 GPU 在集合通…

C++調用PyTorch模型教程

在人工智能的世界中&#xff0c;PyTorch已經成為了研究人員和工程師們廣泛使用的深度學習框架之一。它以其靈活性和動態計算圖而聞名&#xff0c;非常適合快速原型設計和實驗。然而&#xff0c;當我們想要將訓練好的模型部署到生產環境中時&#xff0c;我們可能會傾向于使用C這…

老衛帶你學---leetcode刷題(172. 階乘后的零)

172. 階乘后的零 問題 給定一個整數 n &#xff0c;返回 n! 結果中尾隨零的數量。 提示 n! n * (n - 1) * (n - 2) * … * 3 * 2 * 1 示例 1&#xff1a; 輸入&#xff1a;n 3 輸出&#xff1a;0 解釋&#xff1a;3! 6 &#xff0c;不含尾隨 0 示例 2&#xff1a; 輸入…

Java Web之網頁開發基礎復習

tomcat之網頁開發基礎復習 **聲明** :HTML標準規范 </!doctype> <html> : 根標簽 <head>: 頭部標簽 內含<title><meta><link><style> <body>: 主體 <body></body> html標簽 單標簽: <標簽名 \> 雙標…

Python線性代數數字圖像和小波分析之二

要點 數學方程&#xff1a;數字信號和傅里葉分析&#xff0c;離散時間濾波器&#xff0c;小波分析Python代碼實現及應用變換過程&#xff1a; 讀取音頻和處理音頻波&#xff0c;使用Karplus-強算法制作吉他音頻離散傅里葉計算功能和繪制圖示結果計算波形傅里葉系數正向和反向&…

1_SQL

文章目錄 前端復習SQL數據庫的分類關系型數據庫非關系型數據庫&#xff08;NoSQL&#xff09; 數據庫的構成軟件架構MySQL內部數據組織方式 SQL語言登錄數據庫數據庫操作查看庫創建庫刪除庫修改庫 數據庫中表的操作選擇數據庫創建表刪除表查看表修改表 數據庫中數據的操作添加數…

性別和年齡的視頻實時監測項目

注意&#xff1a;本文引用自專業人工智能社區Venus AI 更多AI知識請參考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 性別和年齡檢測 Python 項目 首先介紹性別和年齡檢測的高級Python項目中使用的專業術語 什么是計算機視覺&#xff1f; 計算機視覺是使計算機能…