【Java面試筆記:基礎】4.強引用、軟引用、弱引用、幻象引用有什么區別?

1. 引用類型及其特點

強引用(Strong Reference):

  • 定義:最常見的引用類型,通過new關鍵字直接創建。
  • 回收條件:只要強引用存在,對象不會被GC回收。
  • 示例:
    Object obj = new Object(); // 強引用
    
  • 特點:
    • 強引用是導致內存泄漏的常見原因(如未及時置為null)。
    • 手動斷開引用:obj = null;

軟引用(Soft Reference):

  • 定義:相對強引用弱化了一些的引用。通過SoftReference類實現,用于描述可有可無的對象。
  • 回收條件:只有在 JVM 認為內存不足時,才會試圖回收軟引用指向的對象。JVM 會確保在拋出 OutOfMemoryError 之前,清理軟引用指向的對象。
  • 應用場景:內存敏感的緩存(如圖片緩存、計算結果緩存)。如果還有空閑內存,可以暫時保留緩存,當內存不足時清理掉,避免耗盡內存。
  • 示例:
    SoftReference<byte[]> softRef = new SoftReference<>(new byte[1024 * 1024]);
    byte[] data = softRef.get(); // 可能返回null(若已被回收)
    
  • 特點:
    • 適合保存非必須但有用的數據,避免頻繁重建。
    • 可通過ReferenceQueue追蹤被回收的對象。

弱引用(Weak Reference):

  • 定義:通過WeakReference類實現,比軟引用更弱。不能使對象豁免垃圾收集,僅提供一種訪問在弱引用狀態下對象的途徑。
  • 回收條件:垃圾收集器在掃描時,無論內存是否充足,一旦發生GC,對象就會被回收。
  • 適用場景:非強制性的映射關系和緩存實現。例如,維護一種沒有特定約束的關系,如果試圖獲取時對象還在,就使用它,否則重現實例化(如WeakHashMap中的鍵)。
  • 示例:
    WeakReference<Object></

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

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

相關文章

ycsb性能測試的優缺點

YCSB&#xff08;Yahoo Cloud Serving Benchmark&#xff09;是一個開源的性能測試框架&#xff0c;用于評估分布式系統的讀寫性能。它具有以下優點和缺點&#xff1a; 優點&#xff1a; 簡單易用&#xff1a;YCSB提供了簡單的API和配置文件&#xff0c;使得性能測試非常容易…

基于SpringBoot的校園賽事直播管理系統-項目分享

基于SpringBoot的校園賽事直播管理系統-項目分享 項目介紹項目摘要管理員功能圖用戶功能圖項目預覽首頁總覽個人中心禮物管理主播管理 最后 項目介紹 使用者&#xff1a;管理員、用戶 開發技術&#xff1a;MySQLJavaSpringBootVue 項目摘要 隨著互聯網和移動技術的持續進步&…

Nginx?中間件的解析

目錄 一、Nginx的核心架構解析 二、Nginx的典型應用場景 三、Nginx的配置優化實踐 四、Nginx的常見缺陷與漏洞 一、Nginx的核心架構解析 ??事件驅動與非阻塞IO模型?? Nginx采用基于epoll/kq等系統調用的事件驅動機制&#xff0c;通過異步非阻塞方式處理請求&#xff0c;…

杭州小紅書代運營公司-品融電商:全域增長策略的實踐者

杭州小紅書代運營公司-品融電商&#xff1a;全域增長策略的實踐者 在品牌競爭日趨激烈的電商領域&#xff0c;杭州品融電商作為一家專注于品牌化全域運營的服務商&#xff0c;憑借其“效品合一”方法論與行業領先的小紅書代運營能力&#xff0c;已成為眾多品牌實現市場突圍的重…

【映客直播-注冊/登錄安全分析報告】

前言 由于網站注冊入口容易被黑客攻擊&#xff0c;存在如下安全問題&#xff1a; 暴力破解密碼&#xff0c;造成用戶信息泄露短信盜刷的安全問題&#xff0c;影響業務及導致用戶投訴帶來經濟損失&#xff0c;尤其是后付費客戶&#xff0c;風險巨大&#xff0c;造成虧損無底洞…

Android audio_policy_configuration.xml加載流程

目錄 一、audio_policy_configuration.xml文件被加載流程 1、AudioPolicyService 創建階段 2、createAudioPolicyManager 實現 3、AudioPolicyManager 構造 4、配置文件解析 loadConfig 5、核心解析邏輯 PolicySerializer::deserialize 二、AudioPolicyConfig類解析 1、…

使用 Docker 安裝 Elastic Stack 并重置本地密碼

Elastic Stack&#xff08;也被稱為 ELK Stack&#xff09;是一個非常強大的工具套件&#xff0c;用于實時搜索、分析和可視化大量數據。Elastic Stack 包括 Elasticsearch、Logstash、Kibana 等組件。本文將展示如何使用 Docker 安裝 Elasticsearch 并重置本地用戶密碼。 ###…

Unitest和pytest使用方法

unittest 是 Python 自帶的單元測試框架&#xff0c;用于編寫和運行可重復的測試用例。它的核心思想是通過斷言&#xff08;assertions&#xff09;驗證代碼的行為是否符合預期。以下是 unittest 的基本使用方法&#xff1a; 1. 基本結構 1.1 創建測試類 繼承 unittest.TestC…

git 版本提交規范

Git 提交規范&#xff08;Git Commit Message Convention&#xff09;是為了讓項目的提交歷史更加清晰、可讀、便于追蹤和自動化工具解析。常見的規范之一是 Conventional Commits&#xff0c;下面是一個推薦的格式規范&#xff1a; &#x1f31f; 提交信息格式&#xff08;Con…

stat判斷路徑

int stat(const char *pathname, struct stat *buf); pathname&#xff1a;用于指定一個需要查看屬性的文件路徑。 buf&#xff1a;struct stat 類型指針&#xff0c;用于指向一個 struct stat 結構體變量。調用 stat 函數的時候需要傳入一個 struct stat 變量的指針&#xff0…

學習Docker遇到的問題

目錄 1、拉取hello-world鏡像報錯 1. 檢查網絡連接 排查: 2. 配置 Docker 鏡像加速器(推薦) 具體解決步驟: 1.在服務器上創建并修改配置文件,添加Docker鏡像加速器地址: 2. 重啟Docker 3. 拉取hello-world鏡像 2、刪除鏡像出現異常 3、 容器內部不能運行ping命令 …

安寶特案例 | AR如何大幅提升IC封裝廠檢測效率?

前言&#xff1a;如何提升IC封裝廠檢測效率&#xff1f; 在現代電子產品的制造過程中&#xff0c;IC封裝作為核心環節&#xff0c;涉及到復雜處理流程和嚴格質量檢測。這是一家專注于IC封裝的廠商&#xff0c;負責將來自IC制造商的晶圓進行保護、散熱和導通處理。整個制程繁瑣…

【Linux網絡與網絡編程】07.應用層協議HTTPS

HTTP 協議內容都是按照文本的方式明文傳輸的&#xff0c;這就導致在傳輸過程中出現一些被篡改的情況。HTTPS 就是在 HTTP 協議的基礎上引入了一個加密層的應用層協議。 1. 基礎概念 1.1 加密與解密 加密就是把明文&#xff08;要傳輸的信息&#xff09;進行一系列變換&#x…

【k8s】PV,PVC的回收策略——return、recycle、delete

PV 和 PVC 的回收策略主要用于管理存儲資源的生命周期&#xff0c;特別是當 PVC 被刪除時&#xff0c;PV 的處理方式。回收策略決定了 PV 在 PVC 被刪除后的行為。 回收策略的類型 Kubernetes 提供了三種主要的回收策略&#xff0c;用于管理 PV 的生命周期&#xff1a; Reta…

2023藍帽杯初賽內存取證-2

直接使用mimikatz插件來獲取用戶密碼&#xff1a; vol.py --plugin/opt/volatility/plugins -f memdump.mem --profile Win7SP1x64 mimikatz 答案&#xff1a;3w.qax.com

使用dompurify修復XSS跨站腳本缺陷

1. 問題描述 漏洞掃描說有一個低危漏洞&#xff0c;容易被跨站腳本攻擊XSS。 2. 使用dompurify修復 DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. 簡單來說&#xff0c;我們可以使用 dompurify 處理xss跨站腳本攻擊。 2.…

【c語言】指針和數組筆試題解析

一維數組: //數組名a如果既不單獨放在sizeof()中&#xff0c;也不與&結合&#xff0c;那么就表示數組首元素的大小 //a一般表示數組首元素地址&#xff0c;只有兩種情況表示整個數組&#xff0c;sizeof(arr)表示整個數組的大小&#xff0c;&arr表示數組的地址 int a[]…

機器人進階---視覺算法(六)傅里葉變換在圖像處理中怎么用

傅里葉變換在圖像處理中怎么用 傅里葉變換的基本原理應用場景Python代碼示例逐行解釋總結傅里葉變換在圖像處理中是一種重要的工具,它將圖像從空間域轉換到頻域,從而可以對圖像的頻率特性進行分析和處理。傅里葉變換在圖像濾波、圖像增強、圖像壓縮和圖像分析等方面都有廣泛應…

深度學習與總結JVM專輯(七):垃圾回收器—CMS(圖文+代碼)

CMS垃圾收集器深度解析教程 1. 前言&#xff1a;為什么需要CMS&#xff1f;2. CMS 工作原理&#xff1a;一場與時間的賽跑2.1. 初始標記&#xff08;Initial Mark&#xff09;2.2. 并發標記&#xff08;Concurrent Mark&#xff09;2.3. 重新標記&#xff08;Remark&#xff09…

數據采集:AI 發展的基石與驅動力

人工智能&#xff08;AI&#xff09;無疑是最具變革性的技術力量之一&#xff0c;正以驚人的速度重塑著各行各業的格局。從智能語音助手到自動駕駛汽車&#xff0c;從精準的醫療診斷到個性化的推薦系統&#xff0c;AI 的廣泛應用已深刻融入人們的日常生活與工作的各個層面。而在…