11. JVM中的分代回收

1. JVM介紹和運行流程-CSDN博客

2. 什么是程序計數器-CSDN博客

3. java 堆和 JVM 內存結構-CSDN博客

4. 虛擬機棧-CSDN博客

5. JVM 的方法區-CSDN博客

6. JVM直接內存-CSDN博客

7. JVM類加載器與雙親委派模型-CSDN博客

8. JVM類裝載的執行過程-CSDN博客

9. JVM垃圾回收-CSDN博客

10. 垃圾回收的算法-CSDN博客

11. JVM中的分代回收-CSDN博客

12. JVM的垃圾回收器-CSDN博客

13. G1垃圾回收器-CSDN博客

14. 垃圾回收的引用區別-CSDN博客

15. JVM調優的參數設置-CSDN博客

16. JVM調優工具-CSDN博客


1. JVM中的分代回收

分代回收(Generational Collection)是一種基于對象生命周期特性的垃圾回收策略,其核心思想是:大多數對象的生命周期都很短,而存活時間較長的對象通常會繼續存活更長時間

分代回收的基本原理

  1. 對象代際劃分:將堆內存劃分為不同代(Generation),通常分為年輕代(Young Generation)和老年代(Old Generation)

  2. 不同頻率回收:對年輕代進行更頻繁的垃圾回收,而對老年代進行較少頻率的回收

  3. 晉升機制:存活足夠長時間的年輕代對象會被晉升(Promote)到老年代


2. 分代回收算法

2.1?年輕代回收算法

通常使用復制算法(Copying):

  • 內存劃分:年輕代分為Eden區和兩個Survivor區(From和To)

  • 分配過程:新對象首先分配在Eden

  • 回收過程

    • 標記存活對象

    • 將存活對象復制到一個Survivor區(From→ToTo→From)

    • 清空Eden和另一個Survivor

    • 交換FromTo的角色

  • 晉升:對象在Survivor區之間經歷一定次數(通常15次)的復制后,晉升到老年代

分配過程圖示:

對于新生代,內部又被分為了三個區域:

  • 伊甸園區Eden,新生的對象都分配到這里
  • 幸存者區survivor(分成from和to)
  • Eden區,from區,to區 8 : 1 : 1

1.?新對象首先分配在Eden區

2.?當伊甸園內存不足,標記伊甸園與from(現階段沒有)的存活對象

?假如咱們在伊甸園區內標記的是 “A對象”,from(現階段沒有)

3.?將存活對象采用復制算法復制到 to 中,復制完畢后,伊甸園和 from 內存都得到釋放

4.?經過一段時間后伊甸園的內存又出現不足,標記eden區域to區存活的對象,將存活的對象復制到from區

假如伊甸園區咱們標記的 “1對象to 區標記?“A對象”。

轉移后如下:

?5.?對象在Survivor區之間經歷一定次數(通常15次)的復制后,晉升到老年代(幸存區內存不足或大對象會導致提前晉升)

假如這次 Eden區存貨的對象是 “w對象”,Survivor區經歷一定次數依舊存活的是 “A對象”。

轉移復制后的結果如下:


2.2 老年代回收算法

通常使用標記-清除-整理算法(Mark-Sweep-Compact):

  • 標記階段:標記所有存活對象

  • 清除階段:回收未標記的對象空間

  • 整理階段:將存活對象向一端移動,減少內存碎片

2.3?跨代引用處理

分代回收需要處理跨代引用問題,通常使用記憶集(Remembered Set)或卡表(Card Table)來記錄從老年代指向年輕代的引用,避免全堆掃描。


3. 問題總結

3.1?說一下JVM中的分代回收?

堆的區域劃分:

  • 堆被分為了兩份:新生代和老年代【1:2】
  • 對于新生代,內部又被分為了三個區域。Eden區,幸存者區survivor(分成from和to)【8:1:1】

對象回收分代回收策略:

  1. 新創建的對象,都會先分配到eden區
  2. 當伊甸園內存不足,標記伊甸園與 from(現階段沒有)的存活對象
  3. 將存活對象采用復制算法復制到to中,復制完畢后,伊甸園和 from 內存都得到釋放
  4. 經過一段時間后伊甸園的內存又出現不足,標記eden區域to區存活的對象,將其復制到from區
  5. 當幸存區對象熬過幾次回收(通常為15次),晉升到老年代(幸存區內存不足或大對象會提前晉升)

3.2?MinorGc、Mixed Gc、FullGc的區別是什么?

  • MinorGC【young GC】發生在新生代的垃圾回收,暫停時間短(STW)
  • Mixed GC 新生代 +老年代部分區域的垃圾回收,G1 收集器特有
  • FullGC:新生代+老年代完整垃圾回收,暫停時間長(STW),應盡力避免

STW(Stop-The-World):暫停所有應用程序線程,等待垃圾回收的完成。


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

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

相關文章

基于PaddleOCR的營業執照識別與數據分析系統

基于PaddleOCR的營業執照識別與數據分析系統 1. 項目概述 本項目旨在利用百度PaddleOCR技術識別營業執照圖片中的關鍵信息,結合自然語言處理(NLP)和卷積神經網絡(CNN)對OCR結果進行分類處理,最后對識別出的收入流水數據進行深度分析與可視化展示。系統將實現從圖像識別到數…

SpringBoot JSON字典序列化翻譯

🧩 一、效果預期 Data public class UserVO {private String status;DictTranslate(type "user_status")private String statusName; }最終返回 JSON: {"status": "1","statusName": "啟用" }&#…

基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一個WebUI自動化框架(5)失敗用例截圖與重試

在UI自動化測試用例執行過程中,經常會有很多不確定的因素導致用例執行失敗,比如網絡原因、環境問題等,所以我們有必要引入重試機制(失敗重跑),來提高測試用例執行穩定性。準備工作:我們在進行失…

【Oracle】centos7靜默安裝oracle19c

靜默安裝三步驟: 1、數據庫安裝db_install.rsp(數據庫軟件安裝響應文件)2、配置監聽netca.rap(監聽配置響應文件)3、建庫dbca.rsp(建庫響應文件)安裝oracle19c先決條件準備: 1.檢查主…

MCP基礎知識二(實戰通信方式之Streamable HTTP)

介紹 MCP 使用 JSON-RPC 2.0 作為其傳輸格式。傳輸層負責將 MCP 協議消息轉換為 JSON-RPC 格式進行傳輸,并將接收到的 JSON-RPC 消息轉換回 MCP 協議消息。其中SSE被廢棄了(Server-Sent Events (SSE) - Deprecated) SSE as a standalone tra…

量子計算與AI的融合:開啟智能革命的“量子躍遷”新范式

當量子計算的并行算力與人工智能的深度學習能力相遇,一場顛覆傳統認知的技術革命正在醞釀。從藥物研發到自動駕駛,從金融風控到氣候預測,兩者的融合不僅突破了經典計算的算力天花板,更催生出全新的算法范式與產業生態。本文將深入解析量子計算與AI融合的技術邏輯、核心突破…

【氮化鎵】不同偏壓應力下電荷俘獲效應導致的P-GaN HEMT閾值電壓不穩定性

2022年12月7日,意大利國家研究委員會微電子與微系統研究所的Giuseppe Greco等人在《Applied Physics Letters》期刊發表了題為《Threshold voltage instability by charge trapping effects in the gate region of p-GaN HEMTs》的文章,基于對p-GaN高電子遷移率晶體管(HEMTs…

ONLYOFFICE深度解鎖系列.10-如何識別圖像和PDF掃描件中的文本?用ONLYOFFICE的AI OCR輕松搞定!

ONLYOFFICE 文檔版本 9.0帶來多項 AI 關鍵改進,顯著提升您處理電子表格和 PDF 文件的工作效率。本指南將重點介紹新增的 OCR 功能,并講解如何在 PDF 編輯器中利用 AI 助手將圖像轉為可編輯文本。什么是 OCR 文字識別?OCR 技術能夠掃描各類文檔…

單例模式詳解:確保一個類只有一個實例

在軟件開發中,設計模式是解決常見問題的經典方案。單例模式(Singleton Pattern)作為創建型設計模式中最簡單也最常用的一種,確保一個類只有一個實例,并提供一個全局訪問點。本文將全面探討單例模式的概念、多種實現方式…

Appdynamic 配置 PostgreSQL 收集器

配置 PostgreSQL 收集器 您可以使用數據庫可見性監控任何版本的 PostgreSQL。 連接詳細信息 部分場地描述創建新的收集器數據庫類型您想要監控的數據庫類型。代理人管理收集器的數據庫代理。收藏家姓名您想要用來識別收集器的名稱。連接詳細信息主機名或 IP 地址運行數據庫的機…

其他常見 HTTP 方法

除了最常用的四種方法(GET、POST、PUT、DELETE),HTTP 協議還定義了一些較少使用但非常有用的請求方法,常用于調試、部分更新、跨域預檢等場景。1. HEAD 方法:獲取響應頭 特點: 用途:與 GET 類似…

Web應用防火墻(WAF)技術

目錄 一:簡介 1.1 Web安全現狀 1.2 傳統防御的局限性 二:Web應用防火墻技術解析 2.1 WAF核心架構 2.2 關鍵技術特性 三:WAF必要性 3.1 典型防護場景 3.2 與傳統方案對比 四:進階防護方案 4.1 智能WAF架構 4.2 關鍵技術…

機器學習之線性回歸(七)

機器學習之線性回歸(七) 文章目錄機器學習之線性回歸(七)一、線性回歸線性回歸超全指南:從“一條直線”到“正則化調參”的完整旅程0. 先對齊語言:標稱型 vs 連續型1. 問題形式化2. 損失函數全景3. 求解方法…

基于開源AI大模型、AI智能名片與S2B2C商城小程序源碼的用戶價值引導與核心用戶沉淀策略研究

摘要:在數字化商業生態中,用戶留存與核心用戶培育是產品成功的關鍵。本文聚焦開源AI大模型、AI智能名片與S2B2C商城小程序源碼的協同應用,探討如何通過技術賦能實現用戶價值引導與核心用戶沉淀。研究結合工業品供應鏈、美妝品牌、健康食品行業…

課題申報書成功率提升85%!借助大模型AI精準選題、搭綜述框架及提煉創新點(附實操AI提示詞)

大家好,感謝關注。我是七哥,一個在高校里不務正業,折騰用大模型AI實操的學術人。可以添加七哥(qige500)交流學術寫作或ChatGPT、Claude等學術大模型AI領域相關問題,多多交流,相互成就,共同進步。 寫一份高質量的課題申報書往往面臨許多困難,對很多同仁來說,難就難在…

Spring之【寫一個簡單的IOC容器EasySpring】

目錄 EasySpring 注解 EasyAutowired EasyComponent EasyComponentScan EasyLazy EasyPostConstruct EasyProtoType EasyValue Bean定義信息 EasyBeanDefinition 管理Bean定義信息 EasyBeanDefinitionRegister Aware EasyAware EasyBeanFactoryAware EasyBea…

Selenium動態網頁爬蟲編寫與解釋

使用Selenium來抓取動態網頁。動態網頁通常是指那些通過JavaScript動態加載內容的網頁,這些內容在初始HTML中并不存在,因此使用傳統的requests庫無法獲取到這些動態生成的內容。Selenium可以模擬瀏覽器行為,等待JavaScript執行并渲染頁面&…

element el-table中使用el-image圖片預覽被其他表格遮擋

或者::v-deep .el-table__cell {position: static !important;}

MyBatis與Spring整合優化實戰指南:從配置到性能調優

一、SqlSessionFactory配置最佳實踐 1.1 數據源配置優化 <!-- Spring配置示例 --> <bean id"dataSource" class"com.zaxxer.hikari.HikariDataSource" destroy-method"close"><property name"driverClassName" value&q…

LUA(初學)

條件語句if if then endlocal a 2 if a < 6 thenprint(a) end2條件語句if else if then else endlocal a 2 local b 3 if a > 6 thenprint(a) elseprint(b) end3while循環語句 while do endlocal a 2 while a < 5 doa a 1print(a) end3 4 5for循環語句 for do …