JVM中對象和GC Root之間的四種引用關系

1. 強引用 只有所有 GC Roots 對象都不通過【強引用】引用該對象,該對象才能被垃圾回收

? ? ? ? ? ? ? 由GC Root直接new出來的對象是強引用,只有當GC Root不再引用該對象的時候,才會被回收

例子:

  List<String> list = new ArrayList<>();list=null;//不再引用ArrayList,下一次垃圾回收觸發就會回收掉ArrayList

2. 軟引用(SoftReference) 僅有軟引用引用該對象時,在垃圾回收后,內存仍不足時會再次出發垃圾回收,回收軟引用對象 可以配合引用隊列來釋放軟引用自身

軟引用可以理解為沒有被GC Root直接引用,而是通過強引用的對象間接引用

如果a,b兩個GC Root針對對象c,a?對c為軟引用,b對c為強引用,這個時候發生垃圾回收并且在內存不足時,是不會回收掉c的,只有當b對c的引用失效時才會進行清除

3. 弱引用(WeakReference) 僅有弱引用引用該對象時,在垃圾回收時,無論內存是否充足,都會回收弱引用對象 可以配合引用隊列來釋放弱引用自身

軟引用和弱引用本身都是對象會占用內存空間,可以配合引用隊列,將軟引用和弱引用的對象清理后放入引用隊列,之后就可以遍歷清除釋放內存

?

4. 虛引用(PhantomReference) 必須配合引用隊列使用,主要配合 ByteBu?er 使用,被引用對象回收時,會將虛引用入隊, 由 Reference Handler 線程調用虛引用相關方法釋放直接內存

?

5. 終結器引用(FinalReference) 無需手動編碼,但其內部配合引用隊列使用,在垃圾回收時,終結器引用入隊(被引用對象 暫時沒有被回收),再由 Finalizer 線程通過終結器引用找到被引用對象并調用它的 ?nalize方法,第二次 GC 時才能回收被引用對象

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

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

相關文章

vue2.0/vue3.0學習筆記——2022.08.16

vue2&#xff08;查漏補缺&#xff09; 一、vue基礎 內置指令&#xff08;查漏補缺&#xff09; 1、v-text 更新元素的textContent 2、v-html 更新元素的innerHtml 3、v-cloak 防止閃現&#xff0c;與css配合: [v-cloak] {dispaly: none} 4、v-once 在初次動態渲染厚&#x…

數據鏈路層

數據鏈路層和網絡層的對比 如果說網絡層實現的是路由的功能&#xff0c;那么數據鏈路層就是實打實的實現具體的傳輸。 就像導航&#xff0c;網絡層告訴我們下一步該去哪個主機&#xff0c;而數據鏈路層則是實現去下一個主機的方法。 網絡層的IP地址告訴我們目的地在哪里&#x…

Spring 框架入門介紹及IoC的三種注入方式

目錄 一、Spring 簡介 1. 簡介 2. spring 的核心模塊 ? 二、IoC 的概念 2.1 IoC 詳解 2.2 IoC的好處 2.3 談談你對IoC的理解 三、IoC的三種注入方式 3.1 構造方法注入 3.2 setter方法注入 3.3 接口注入&#xff08;自動分配&#xff09; 3.4 spring上下文與tomcat整…

MySQL--存儲過程--詳解/示例

MySQL中的存儲過程詳解 在MySQL數據庫中&#xff0c;存儲過程是一種預先編譯好的SQL代碼塊&#xff0c;可以被重復調用。它們允許我們將常用的操作邏輯封裝起來&#xff0c;并簡化數據庫交互。本文將介紹MySQL存儲過程的基本語法和使用示例。 創建存儲過程 使用CREATE PROCE…

前端JavaScript企業框架的全面解析

引言 在現代Web開發中&#xff0c;前端JavaScript框架扮演著至關重要的角色。它們提供了豐富的功能和工具&#xff0c;幫助開發人員構建功能強大且易于維護的企業級應用程序。本篇博客將全面解析前端JavaScript企業框架&#xff0c;介紹其優勢、使用場景和常見的框架選擇。 什…

第三屆OceanBase數據庫大賽啟動,升級為國家級競賽

近日&#xff0c;第三屆OceanBase數據庫大賽啟動報名。本屆大賽進一步升級為全國大學生計算機系統能力大賽&#xff0c;由系統能力培養研究專家組發起&#xff0c;全國高等學校計算機教育研究會、系統能力培養研究項目發起高校主辦&#xff0c;OceanBase承辦&#xff0c;旨在培…

【Linux】Linux工具篇(yum、vim、gcc/g++、gdb、Makefile、git)

&#x1f680; 作者簡介&#xff1a;一名在后端領域學習&#xff0c;并渴望能夠學有所成的追夢人。 &#x1f681; 個人主頁&#xff1a;不 良 &#x1f525; 系列專欄&#xff1a;&#x1f6f9;Linux &#x1f6f8;C &#x1f4d5; 學習格言&#xff1a;博觀而約取&#xff…

nvm命令

1. 常見命令 1. nvm -v //查看nvm版本 nvm --version &#xff1a;顯示 nvm 版本 2. nvm list //顯示版本列表 nvm list &#xff1a;顯示已安裝的版本&#xff08;同 nvm list installednvm list installed&#xff1a;顯示已安裝的版本nvm list available&#xff1a;顯示所有…

【java】常用工具——包裝類

1. Java中的數據類型 #mermaid-svg-8QZByhDXxJpYzQ8U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8QZByhDXxJpYzQ8U .error-icon{fill:#552222;}#mermaid-svg-8QZByhDXxJpYzQ8U .error-text{fill:#552222;stroke…

圖數據庫_Neo4j學習cypher語言_使用CQL_構建明星關系圖譜_導入明星數據_導入明星關系數據_創建明星關系---Neo4j圖數據庫工作筆記0009

首先找到明星數據 可以看到有一個sheet1,是,記錄了所有的關系的數據 然后比如我們搜索一個撒貝寧,可以看到撒貝寧的數據 然后這個是構建的CQL語句 首先我們先去啟動服務 neo4j console 然后我們再來看一下以前導入的,可以看到導入很簡單, 就是上面有CQL 看一下節點的屬性

【HarmonyOS】鴻蒙應用獲取華為帳號手機號碼步驟(API7及以下)

【寫在前面】 本文主要介紹使用API7及以下版本開發HarmonyOS應用時&#xff0c;通過華為帳號SDK和云側接口獲取手機號碼的主要開發步驟&#xff0c;注意&#xff1a;開發過程中集成的華為帳號SDK僅支持API7及以下版本的HarmonyOS應用。 【前提準備】 1、HarmonyOS應用已申請獲…

搭載KaihongOS的工業平板、機器人、無人機等產品通過3.2版本兼容性測評,持續繁榮OpenHarmony生態

近日&#xff0c;搭載深圳開鴻數字產業發展有限公司&#xff08;簡稱“深開鴻”&#xff09;KaihongOS軟件發行版的工業平板、機器人、無人機等商用產品均通過OpenAtom OpenHarmony&#xff08;以下簡稱“OpenHarmony”&#xff09;3.2 Release版本兼容性測評&#xff0c;獲頒O…

centos7安裝 postgresql postgis pgrouting

centos7 源碼編譯太煩了。直接yum install ...... 一、版本信息&#xff1a; CentOS版本&#xff1a;CentOS Linux release 7.9.2009 (Core) PostgreSQL版本&#xff1a; PostgreSQL 12.0 PostGIS版本&#xff1a;postgis31 二、PostgresSQL PostGIS 安裝 1、官網安裝鏈接&…

ue5讀取外部文件

準備環境 我的環境是win10&#xff0c;ue5.1.1&#xff0c;cpux86。 創建工程時&#xff0c;需要選擇C模式 這樣在Content Browser中會出現C Classes文件夾&#xff0c;下面有一個本項目命名的文件夾&#xff0c;鼠標右鍵可以看到New C Class選項。 新建類的時候選擇父類Blue…

JAVA Bean 對象的作用域和生命周期

Bean 作用域和生命周期 1. 作用域1.1 作用域定義1.2 Bean 的 6 種作?域1.2.1 singleton(單例作?域)1.2.2 prototype (原型作?域 / 多例作?域)1.2.3 request&#xff1a;(請求作?域)1.2.4 session&#xff1a;(會話作?域)1.2.5 application&#xff1a;(全局作?域)1.2.6 …

【Redis】Redis 的學習教程(五)之 SpringBoot 集成 Redis

在前幾篇文章中&#xff0c;我們詳細介紹了 Redis 的一些功能特性以及主流的 java 客戶端 api 使用方法。 在當前流行的微服務以及分布式集群環境下&#xff0c;Redis 的使用場景可以說非常的廣泛&#xff0c;能解決集群環境下系統中遇到的不少技術問題&#xff0c;在此列舉幾…

Vector

歡迎來到Cefler的博客&#x1f601; &#x1f54c;博客主頁&#xff1a;那個傳說中的man的主頁 &#x1f3e0;個人專欄&#xff1a;題目解析 &#x1f30e;推薦文章&#xff1a;題目大解析2 目錄 &#x1f449;&#x1f3fb;vector概念&#x1f449;&#x1f3fb;vector constr…

Node + Express 后臺開發 —— 起步

Node Express 后臺開發 —— 起步 前面陸續學習了一下 node、npm、模塊&#xff0c;也稍嘗試 Express&#xff0c;感覺得換一個思路加快進行。 比如筆者對前端的開發已較熟悉&#xff0c;如果領導給一個內部小網站的需求&#xff0c;難道說你得給我配置一個后端&#xff1f;…

selenium 選定ul-li下拉選項中某個指定選項

場景&#xff1a;selenium的下拉選項是ul-li模式&#xff0c;選定某個指定的選項。 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 顯示等待def select_li(self, text, *ul_locator):"…

六圖備份 大容量圖片

1.1、切割&#xff08;9*16&#xff09; # 參考網址&#xff1a;https://blog.csdn.net/weixin_42182534/article/details/125773141?ops_request_misc&request_id&biz_id102&utm_termpython%E6%88%AA%E5%8F%96%E5%9B%BE%E7%89%87%E7%9A%84%E4%B8%80%E9%83%A8%E5%…