JVM之GC常見的垃圾回收器

收集器適用區域特點適用場景
Serial新生代單線程,STW(Stop-The-World)客戶端小應用
Parallel Scavenge新生代多線程,吞吐量優先后臺計算任務
ParNew新生代Serial 的多線程版配合 CMS 使用
CMS老年代并發標記,低延遲響應優先的系統
G1全堆分區域回收,平衡吞吐/延遲JDK9+ 默認
ZGC全堆超低延遲(<10ms)超大堆應用

1. Serial 收集器

  • 特點:單線程、STW(Stop-The-World)

  • 區域:新生代(復制算法)

  • 適用場景:客戶端模式(如-client)、單核CPU

  • 參數-XX:+UseSerialGC

總結:簡單高效,但停頓時間長。


2. ParNew 收集器

  • 特點:Serial 的多線程版本

  • 區域:新生代(復制算法)

  • 適用場景:配合CMS使用(JDK8及之前)

  • 參數-XX:+UseParNewGC

總結:多線程提升GC效率,但仍有STW。


3. Parallel Scavenge(吞吐量優先)

  • 特點:多線程、關注吞吐量(吞吐量 = 用戶代碼時間 / (用戶代碼時間 + GC時間)

  • 區域:新生代(復制算法)

  • 適用場景:后臺計算型任務(如批量處理)

  • 參數-XX:+UseParallelGC

總結:適合不關心延遲,追求高吞吐的場景。


4. Serial Old 收集器

  • 特點:Serial 的老年代版本

  • 區域:老年代(標記-整理算法)

  • 適用場景:與Parallel Scavenge搭配或作為CMS后備

  • 參數-XX:+UseSerialOldGC(JDK9已移除)


5. Parallel Old 收集器

  • 特點:Parallel Scavenge 的老年代版本

  • 區域:老年代(標記-整理算法)

  • 適用場景:與Parallel Scavenge組合,吞吐量優先

  • 參數-XX:+UseParallelOldGC

總結:JDK8默認組合(Parallel Scavenge + Parallel Old)。


6. CMS(Concurrent Mark-Sweep)

  • 特點:并發標記清除、低延遲

  • 區域:老年代(標記-清除算法)

  • 流程

    1. 初始標記(STW)

    2. 并發標記

    3. 重新標記(STW)

    4. 并發清除

  • 缺點:內存碎片、并發模式失敗(Concurrent Mode Failure)

  • 參數-XX:+UseConcMarkSweepGC(JDK14已移除)

總結:減少停頓時間,但內存碎片和CPU敏感。


7. G1(Garbage-First)

  • 特點:分區域(Region)收集、可預測停頓模型

  • 區域:全堆(標記-整理算法)

  • 流程

    1. 初始標記(STW)

    2. 并發標記

    3. 最終標記(STW)

    4. 篩選回收(STW)

  • 優勢:平衡吞吐和延遲,適合大堆(JDK9+默認)

  • 參數-XX:+UseG1GC

總結:現代JVM首選,適合6GB以上堆內存。


8. ZGC(低延遲)

  • 特點:并發回收、停頓時間<10ms

  • 區域:全堆(染色指針+讀屏障)

  • 適用場景:超大堆(TB級)、對延遲敏感

  • 參數-XX:+UseZGC(JDK15+生產可用)

總結:未來趨勢,但需要較新JDK版本。


9. Shenandoah

  • 特點:類似ZGC,但開源實現

  • 優勢:低停頓(與ZGC競爭)

  • 參數-XX:+UseShenandoahGC


對比總結

收集器目標算法適用場景
Serial/Serial Old簡單復制/標記-整理單核、客戶端
Parallel Scavenge高吞吐復制/標記-整理后臺計算
CMS低延遲標記-清除老年代(JDK8及之前)
G1平衡標記-整理JDK9+默認,大堆
ZGC/Shenandoah超低延遲染色指針超大堆、敏感應用

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

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

相關文章

免費私有化部署! PawSQL社區版,超越EverSQL的企業級SQL優化工具面向個人開發者開放使用了

1. 概覽 1.1 快速了解 PawSQL PawSQL是專注于數據庫性能優化的企業級工具&#xff0c;解決方案覆蓋SQL開發、測試、運維的整個流程&#xff0c;提供智能SQL審核、查詢重寫優化及自動化巡檢功能&#xff0c;支持MySQL、PostgreSQL、Oracle、SQL Server等主流數據庫及達夢、金倉…

HTTP/HTTPS與SOCKS5協議在隧道代理中的兼容性設計解析

目錄 引言 一、協議特性深度對比 1.1 協議工作模型差異 1.2 隧道代理適配難點 二、兼容性架構設計 2.1 雙協議接入層設計 2.2 統一隧道內核 三、關鍵技術實現 3.1 協議轉換引擎 3.1.1 HTTP→SOCKS5轉換 3.1.2 SOCKS5→HTTP轉換 3.2 連接管理策略 3.2.1 智能連接池 …

3DGS——基礎知識學習筆記

1.什么是3D高斯潑濺&#xff08;3D Gaussian Splatting&#xff09;&#xff1f; 目標&#xff1a;從一組稀疏的3D點&#xff08;比如通過相機或激光雷達采集的點云&#xff09;重建出高質量的3D場景&#xff0c;并支持實時渲染。 核心思想&#xff1a;用許多“3D高斯分布”&…

【C++】不推薦使用的std::allocator<void>

文章目錄 不推薦使用的std::allocator<void>1. 核心區別2. 成員函數對比(1) allocate 和 deallocate(2) construct 和 destroy 3. 設計動機(1) std::allocator<T>(2) std::allocator<void> 4. 使用場景示例(1) std::allocator<int>(2) std::allocator&…

Go 語言云原生微服務全棧實戰:Docker 鏡像優化、K8s 編排與 Istio 流量治理

本系列文章將以 Go 語言為主導開發語言&#xff0c;系統性地講解如何從零構建一個基于微服務架構的應用系統&#xff0c;涵蓋以下核心模塊&#xff1a; 使用 Go 構建高性能微服務構建精簡且高效的 Docker 鏡像利用 Kubernetes 進行微服務編排與部署通過 Istio 實現微服務的流量…

windows下authas調試tomcat

一般情況下&#xff0c;我們只需要輸入以下代碼 java -jar authas.jar調試tomcat時需要加上進程號 java -jar authas.jar <PID> 此外&#xff0c;如果你使用的是 Java 11 或更高版本&#xff0c;你需要添加 --add-opens 參數&#xff0c;以便 Arthas 能夠訪問 JVM 的內…

01_springboot中bean的生命周期

文章目錄 bean的生命周期1. Bean定義階段2. Bean實例化階段3. 屬性賦值階段4. 初始化階段5. 使用階段6. 銷毀階段 bean的生命周期 在Spring Boot中&#xff0c;Bean的生命周期包括定義、實例化、屬性賦值、初始化、使用和銷毀等階段。下面我將詳細解釋這些階段&#xff0c;并提…

Oracle基礎知識

目錄 1.別名的使用 2.AND的優先級高于OR 3.where后面可以接別名&#xff0c;order by后面不可以 4.Oracle中SQL的執行順序(重點) 5.dual萬用表 6.是否區分大小寫 7.Oracle常用數據類型 8.Oracle常用函數 (1)length字符、lengthb字節和cast強制類型轉換 (2)數據類型轉…

React 播客專欄 Vol.13|樣式不難搞,Tailwind CSS 與 SVG 實戰入門

&#x1f44b; 歡迎回到《前端達人 React 播客書單》第 13 期&#xff08;正文內容為學習筆記摘要&#xff0c;音頻內容是詳細的解讀&#xff0c;方便你理解&#xff09;&#xff0c;請點擊下方收聽 視頻版&#xff1a; 文字版&#xff1a; 今天我們進入樣式化的實戰環節&…

matlab慕課學習3.5

于20250520 3.5 用while 語句實現循環結構 3.5.1while語句 多用于循環次數不確定的情況&#xff0c;循環次數確定的時候用for更為方便。 3.5.2break語句和continue語句 break用來跳出循環體&#xff0c;結束整個循環。 continue用來結束本次循環&#xff0c;接著執行下一次…

鴻蒙開發進階:深入解析ArkTS語言特性與開發范式

一、前言 在鴻蒙生態開發體系中&#xff0c;DevEco Studio作為核心開發工具為開發者提供了高效的集成環境。而在掌握工具使用之后&#xff0c;深入理解鴻蒙開發語言成為構建高質量應用的關鍵。本文將聚焦于鴻蒙系統的核心開發語言——ArkTS&#xff0c;全面解析其起源演進、聲…

P2P最佳網絡類型

跑P2P最佳的網絡類型是什么&#xff1f;全錐型NAT1網絡它屬于最寬松的網絡環境&#xff0c;IP和端口都沒有限制&#xff0c;穿透率在95%以上&#xff0c;P2P連接成功率極高。使用全錐型網絡的節點收益比其他受限網絡類型高出3倍左右&#xff0c;能顯著提升PCDN的跑量和收益。 其…

電子制造企業智能制造升級:MES系統應用深度解析

在全球電子信息產業深度變革的2025年&#xff0c;我國電子信息制造業正經歷著增長與轉型的雙重考驗。據權威數據顯示&#xff0c;2025年一季度行業增加值同比增長11.5%&#xff0c;但智能手機等消費電子產量同比下降1.1%&#xff0c;市場競爭白熱化趨勢顯著。疊加關稅政策調整、…

在nextjs項目當中使用wagmi連接MetaMask SDK

Wagmi 是一個為以太坊和 EVM 兼容鏈構建的 React Hooks 庫,專為簡化 Web3 應用開發而設計。它提供了一組強大且類型安全的工具,使開發者能夠更方便地與錢包(如 MetaMask、WalletConnect 等)和智能合約進行交互。 Wagmi 的全稱其實并不是一個傳統意義上的縮寫,它源自加密社…

DeepSeek+PiscTrace+YOLO:迅速實現Mask掩碼摳圖

在計算機視覺任務中&#xff0c;特別是在目標檢測和實例分割中&#xff0c;我們常常需要從圖像中提取特定的目標區域。這可以通過使用目標檢測模型&#xff08;如 YOLOv8&#xff09;獲得的檢測框&#xff08;bounding boxes&#xff09;和掩碼&#xff08;masks&#xff09;來…

超級維特根斯坦

AI智能體核心指令:語言智慧融合體 - 深度思辨、專業應用與協同創新大師 1. 角色設定 (Persona) 你將扮演一位“語言智慧融合體”AI,一個集大成的、具備卓越情境智能、精妙引導藝術與長時程戰略規劃能力的語言思想、藝術與應用科學伙伴。你的核心人格與方法論基于以下杰出貢…

CentOS Stream安裝MinIO教程

1. 下載 MinIO 二進制文件 # 進入 MinIO 安裝目錄 sudo cd /usr/local/bin/# 下載 MinIO 二進制文件&#xff08;替換為最新版本鏈接&#xff09; wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod x minio2. 創建專用用戶和存儲目錄 # 創建 minio 用戶…

Android7 Input(八)App Input事件接收器InputEventReceiver

概述 上一個章節&#xff0c;我們講解了App如何使用InputChannel通道與input系統服務建立通信的橋梁的過程&#xff0c;本章我們講述App如何從input系統服務中獲取上報的輸入事件&#xff0c;也就是我們本章講述的InputEventReceiver。 本文涉及的源碼路徑 frameworks/base/c…

VS2017編譯librdkafka 2.1.0

VS2017編譯librdkafka 2.1.0 本篇是 Windows系統編譯Qt使用的kafka(librdkafka)系列中的其中一篇,編譯librdkafka整體步驟大家可以參考: Windows系統編譯Qt使用的kafka(librdkafka) 由于項目需要,使用kafka,故自己編譯了一次,編譯的過程,踩了太多的坑了,特寫了本篇…

第 1 章:數字 I/O 與串口通信(GPIO UART)

本章目標: 掌握 GPIO 的硬件原理、寄存器配置與典型驅動框架 深入理解 UART/USART 的幀格式、波特率配置、中斷與 DMA 驅動 通過實戰案例,將 GPIO 與 UART 結合,實現 AT 命令式外設控制 章節結構 GPIO 概述與硬件原理 GPIO 驅動實現:寄存器、中斷與去抖 UART/USART 原理與幀…