面試八股之JVM篇3.5——垃圾回收——G1垃圾回收器

🌈hello,你好鴨,我是Ethan,一名不斷學習的碼農,很高興你能來閱讀。

??目前博客主要更新Java系列、項目案例、計算機必學四件套等。
🏃人生之義,在于追求,不在成敗,勤通大道。加油呀!

🔥個人主頁:Ethan Yankang
🔥專欄:面試八股文||Java項目

🔥本篇概覽:詳細講解了G1垃圾回收器的工作原理


?

目錄

?3.6 詳細聊一下G1垃圾回收器

3.6.1 概述

3.6.2 Young Collection(年輕代垃圾回收)

3.6.3 Young Collection + Concurrent Mark (年輕代垃圾回收+并發標記)

3.6.4 Mixed Collection (混合垃圾回收)


3.6 詳細聊一下G1垃圾回收器

難易程度:☆☆☆☆

出現頻率:☆☆☆☆

3.6.1 概述
  • 應用于新生代和老年代,在DK9之后默認使用G1

  • 劃分成多個區域,每個區域都可以充當 eden,survivor,old, humongous,其中 humongous 專為大對象準備

  • 采用復制算法

  • 響應時間與吞吐量兼顧

  • 分成三個階段:新生代回收、并發標記、混合收集

  • 如果并發失敗(即回收速度趕不上創建新對象速度),會觸發 Full GC

3.6.2 Young Collection(年輕代垃圾回收)
  • 初始時,所有區域都處于空閑狀態

  • 創建了一些對象,挑出一些空閑區域作為伊甸園區存儲這些對象

  • 當伊甸園需要垃圾回收時,挑出一個空閑區域作為幸存區,用復制算法復制存活對象,需要暫停用戶線程

  • 隨著時間流逝,伊甸園的內存又有不足

  • 將伊甸園以及之前幸存區中的存活對象,采用復制算法,復制到新的幸存區,其中較老對象晉升至老年代

3.6.3 Young Collection + Concurrent Mark (年輕代垃圾回收+并發標記)

當老年代占用內存超過閾值(默認是45%)后,觸發并發標記,這時無需暫停用戶線程

  • 并發標記之后,會有重新標記階段解決漏標問題,此時需要暫停用戶線程。

  • 這些都完成后就知道了老年代有哪些存活對象,隨后進入混合收集階段。此時不會對所有老年代區域進行回收,而是根據暫停時間目標優先回收價值高(存活對象少)的區域(這也是 Gabage First 名稱的由來)。

3.6.4 Mixed Collection (混合垃圾回收)

復制完成,內存得到釋放。進入下一輪的新生代回收、并發標記、混合收集

其中H叫做巨型對象,如果對象非常大,會開辟一塊連續的空間存儲巨型對象



💖💖💖???????💖???????💖???????💖???????💖???????💖???????💖???????💖💖💖💖💖???????💖???????💖???????💖???????💖??????

熱門專欄推薦

???????

🌈🌈計算機科學入門系列? ? ? ? ? ? ? ? ? ? ?關注走一波💕💕

🌈🌈CSAPP深入理解計算機原理? ? ? ??關注走一波💕💕

🌈🌈微服務項目之黑馬頭條? ? ? ? ? ? ? ?? 關注走一波💕💕

🌈🌈redis深度項目之黑馬點評? ? ? ? ? ??關注走一波💕💕

🌈🌈Java面試八股文系列專欄? ? ? ? ? ? 關注走一波💕💕

🌈🌈算法leetcode+劍指offer??? ? ? ? ? ? ?關注走一波💕💕


📣非常感謝你閱讀到這里,如果這篇文章對你有幫助,希望能留下你的點贊👍 關注? 分享👥 留言💬thanks!!!
📚愿大家都能學有所得,功不唐捐!

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

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

相關文章

1688. 比賽中的配對次數

題目: 給你一個整數 n ,表示比賽中的隊伍數。比賽遵循一種獨特的賽制: 如果當前隊伍數是 偶數 ,那么每支隊伍都會與另一支隊伍配對。總共進行 n / 2 場比賽,且產生 n / 2 支隊伍進入下一輪。 如果當前隊伍數為 奇數 …

python梯度下降法求解三元線性回歸系數,并繪制結果

import numpy as np import matplotlib.pyplot as plt # 生成隨機數據 np.random.seed(0) X1 2 * np.random.rand(100, 1) X2 3 * np.random.rand(100, 1) X3 4 * np.random.rand(100, 1) y 4 3 * X1 5 * X2 2 * X3 np.random.randn(100, 1) # 合并特征 X_b np.hsta…

Vue中組件之間的通信有哪些方法

在Vue中,組件之間的通信有多種方法,以下是一些常見的方法: Props和$emit: 父組件通過props向子組件傳遞數據。子組件通過$emit觸發事件,將數據傳遞給父組件。 provide和inject: 在Vue 2.2.0版本中引入的選…

云計算-特殊機制(Specialsed Mechanisms)

自動擴展監聽器 (Automated Scaling Listener) 自動擴展監聽器是一種特定類型的服務代理。它運行在云提供商的網絡中,監控云消費者和云服務之間的網絡流量。通過分析消費者和服務之間的消息量和類型,它可以測量云服務的負載。 自動擴展監聽器對變化的負載…

常見 JVM 面試題補充

原文地址 : 26 福利:常見 JVM 面試題補充 (lianglianglee.com) CMS 是老年代垃圾回收器? 初步印象是,但實際上不是。根據 CMS 的各個收集過程,它其實是一個涉及年輕代和老年代的綜合性垃圾回收器。在很多文章和書籍的劃分中&…

SpringCloud Alibaba的相關組件的簡介及其使用

Spring Cloud Alibaba是阿里巴巴為開發者提供的一套微服務解決方案,它基于Spring Cloud項目,提供了一系列功能強大的組件,包括服務注冊與發現、配置中心、熔斷與限流、消息隊列等。 本文將對Spring Cloud Alibaba的相關組件進行簡介&#xff…

React Native 之 動畫Animated(十二)

react-native 的 Animated API提供了一種聲明式的方式來創建平滑的動畫效果。它允許你編寫動畫邏輯,并將動畫值直接綁定到組件的樣式或布局屬性上。 react-native 的 Animated 庫通過以下方式工作: 創建動畫值:首先,你需要使用 A…

ROCm上運行預訓練BERT

14.10. 預訓練BERT — 動手學深度學習 2.0.0 documentation (d2l.ai) 下載數據集 在d2l-zh/pytorch/data目錄解壓: ~/d2l-zh/pytorch/data$ unzip wikitext-2-v1.zip Archive: wikitext-2-v1.zipcreating: wikitext-2/inflating: wikitext-2/wiki.test.tokens …

【第17章】MyBatis-Spring之注入映射器

文章目錄 前言一、注冊映射器1. XML 配置2. Java 配置 二、發現映射器1. <mybatis:scan/>2.MapperScan ( 建議 ) \color{#00FF00}{(建議)} (建議) 三、MapperScannerConfigurer總結 前言 與其在數據訪問對象&#xff08;DAO&#xff09;中手工編寫使用 SqlSessionDaoSu…

數據庫--數據庫基礎(一)

目錄 第一章 緒論 一.數據庫的基本概念 1. 數據庫的4個基本概念 2、數據庫系統的特點 二.數據庫和文件 三.數據模型 1.概念模型 2.邏輯模型(物理模型) 2.1關系模型 四.數據庫系統的三級模式結構&#xff1a; 五數據庫的二級映像功能與數據獨立性 第二章 關系數據庫…

WEBPACK開發|生產環境配置(抽離公共部分)

這是webpack4演示&#xff0c;webpack5有些插件不在推薦&#xff0c; 1. webpack.base.config.js文件的配置說明 const path require(path); const webpack require(webpack); const ExtractTextPlugin require(extract-text-webpack-plugin); // 該插件的主要是為了抽離c…

【LeetCode面試經典150題】100. 相同的樹

一、題目 100. 相同的樹 - 力扣&#xff08;LeetCode&#xff09; 給你兩棵二叉樹的根節點 p 和 q &#xff0c;編寫一個函數來檢驗這兩棵樹是否相同。 如果兩個樹在結構上相同&#xff0c;并且節點具有相同的值&#xff0c;則認為它們是相同的。 二、思路 二叉樹的題&#…

C++的lambda函數、bind函數、類函數綁定參數,學習測試用例

在C中&#xff0c;Lambda函數、std::bind 和類函數綁定參數提供了靈活的方式來處理函數調用。 Lambda函數是一種匿名函數&#xff0c;可以捕獲外部變量并在函數體內使用。它們提供了簡潔而強大的方式來定義內聯函數。std::bind 用于創建一個新的函數對象&#xff0c;其中部分參…

2024電工杯數學建模B題高質量成品論文,包括代碼數據

2024電工杯數學建模B題高質量成品論文&#xff0c;包括代碼數據 完整內容見文末名片 摘要 大學時期是學生們知識學習和身體成長的重要階段&#xff0c;良好的飲食習慣對于促進生長發育和保證身體健康具有重要意義。針對當前大學生中存在的飲食結構不合理及不良飲食習慣的問題…

為了性能,放棄tft_eSPI,選擇arduino_gfx吧

本來對于tft_espi和arduino_gfx沒啥特別的感覺&#xff0c;都是tft屏幕驅動,arduino_gfx的好處就是除了支持tft外還支持一些oled屏幕。 誰知道在探尋我那個在單片機項目上顯示中文方案 https://github.com/StarCompute/tftziku 時候&#xff0c;尋求極致性能測了一些東西。 t…

23種設計模式之一————工廠模式詳細講解

工廠模式介紹 定義分類工廠模式核心角色&#xff1a;簡單工廠模式定義特點優點缺點應用場景代碼實現 工廠方法模式&#xff08;別名&#xff1a;虛擬構造&#xff09;定義特點優點缺點應用場景代碼實現 抽象工廠模式定義特點優點缺點應用場景代碼實現工廠模式小結 定義 工廠模…

算法之背包問題

可分的背包問題是可以用貪心法來解決&#xff0c;而0-1背包問題通常使用動態規劃方法來解決。 可分背包問題&#xff1a; 在可分背包問題中&#xff0c;物品可以被分割&#xff0c;您可以取走物品的一部分以適應背包的容量。這里的關鍵是物品的價值密度&#xff0c;即單…

最小產品價格差值

題目描述 給定某產品多少天的價格&#xff0c;記錄于prices中&#xff0c;請找出任意兩天之間的最小價格差&#xff08;即abs(prices[i] - prices[j])&#xff09;的最小值&#xff0c;i!j&#xff09;并計算最小介個差組合的個數 樣例1 輸入 [1,3,7,5,12] 輸出 3 樣例2…

VTK9.2.0+QT5.14.0繪制三維顯示背景

背景 上一篇繪制點云的博文中&#xff0c;使用的vtkCameraOrientationWidget來繪制的坐標軸&#xff0c;最近又學習到兩種新的坐標軸繪制形式。 vtkOrientationMarkerWidget vtkAxesActor 單獨使用vtkAxesActor能夠繪制出坐標軸&#xff0c;但是會隨著鼠標操作旋轉和平移時…

微服務中使用Maven BOM來管理你的版本依賴

摘要: 原創出處 sf.gg/a/1190000021198564 「飄渺Jam」歡迎轉載&#xff0c;保留摘要&#xff0c;謝謝&#xff01; 為什么要使用BOM? 如何定義BOM? 項目使用方法? BOM&#xff08;Bill of Materials&#xff09;是由Maven提供的功能,它通過定義一整套相互兼容的jar包版…