跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

JVM GC 核心解析:收集器、GC 类型与四种垃圾回收算法

JVM 垃圾回收机制涉及底层算法、GC 类型与收集器三者关系。核心算法包括标记 - 清除、标记 - 复制、标记 - 整理及标记 - 重定位。GC 类型按回收区域分为新生代、老年代和全堆回收。主流收集器涵盖传统分代的 Serial、Parallel、CMS,以及现代低停顿的 G1、ZGC、Shenandoah。选型需依据内存大小与性能目标:小内存选 Serial,高吞吐选 Parallel,低停顿选 G1 或 ZGC。避免频繁 Full GC 并合理调整参数可优化 GC 性能。

kaikai发布于 2026/3/15更新于 2026/6/2135 浏览
JVM GC 核心解析:收集器、GC 类型与四种垃圾回收算法

在 JVM 内存管理中,GC(垃圾回收)是绕不开的核心话题,而新手常被'收集器、GC 类型、底层算法'三者的关系绕晕——到底 Serial GC 和 Minor GC 是什么关系?标记 - 清除算法又被哪些收集器使用?本文将打破概念壁垒,从本质到落地,系统梳理三者的关联,帮你建立完整的 GC 知识体系。

一、先明确三大核心概念的本质

这三者并非并列关系,而是'底层实现(算法)→ 操作类型(GC 类型)→ 具体载体(收集器)'的层层递进关系,我们先逐个拆解本质:

1. 底层垃圾回收算法(执行手段)

是 GC 的'底层操作逻辑',定义了'如何识别垃圾'和'如何回收垃圾',是所有收集器的实现基础。核心有 4 类(含优化变种),各有适配场景:

  • 标记 - 清除算法:先标记不可达的垃圾对象,再直接清除。优点是实现简单、无需移动对象;缺点是产生内存碎片、回收效率低(适合存活对象多的场景)。
  • 标记 - 复制算法:将内存划分为两块,仅使用一块,回收时复制存活对象到另一块,再清空原块。优点是无碎片、回收效率高;缺点是内存利用率低(仅 50%,适合存活对象少的场景)。
  • 标记 - 整理算法:先标记垃圾对象,再将存活对象向内存一端移动,最后清空末端垃圾。优点是无碎片、内存利用率高;缺点是移动对象开销大,STW(停止-the-世界)时间长(适合碎片敏感场景)。
  • 标记 - 重定位算法:标记 - 复制的优化版,通过'染色指针'并发移动对象,无需全程 STW,兼顾无碎片和低停顿(现代大内存 GC 的核心算法)。
2. GC 类型(按回收区域划分的操作)

是对'GC 操作范围'的分类,和具体收集器无关,所有收集器都需执行对应类型的 GC,核心分 3 类(JVM 规范无严格定义,以实际回收区域为准):

  • Minor GC(新生代 GC):仅回收新生代(Eden+Survivor 区),触发条件为 Eden 区满,所有收集器均支持,STW 时间较短(新生代对象朝生夕死,存活少)。
  • Major GC(老年代 GC):仅回收老年代,极少单独触发,通常与 Full GC 混淆,触发条件多为老年代使用率达阈值、晋升失败。
  • Full GC(全堆 GC):回收新生代 + 老年代 + 元空间,触发条件复杂(老年代满、显式调用 System.gc()、碎片过多等),STW 时间最长,需尽量避免。
3. GC 收集器(算法与 GC 类型的载体)

是 JVM 提供的

目录

  1. 一、先明确三大核心概念的本质
  2. 1. 底层垃圾回收算法(执行手段)
  3. 2. GC 类型(按回收区域划分的操作)
  4. 3. GC 收集器(算法与 GC 类型的载体)
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ESP-SparkBot 开源 AI 桌面机器人 ESP32-S3 核心方案解析
  • 大模型微调技术体系与核心技能详解
  • 2024 年人工智能大模型年度回顾与应用趋势
  • 斯坦福 CS336 作业实战:从零实现 Transformer 语言模型架构
  • 前端岗位核心面试题与参考答案整理
  • OpenDroneMap 无人机影像处理与三维建模实战指南
  • 拆解 DDSM400 钕强磁外转子 65mm 伺服轮毂电机
  • AI Agent Skills 资源合集及多平台一键安装指南
  • 小鹏 VLA 2.0 技术解析:自动驾驶与人形机器人的端到端演进
  • CherryStudio 使用指南
  • 前端地图基本操作控制:平移、缩放、旋转及样式切换
  • OpenClaw 腾讯云服务器部署与飞书对接实战指南
  • 基于 Python+Django 的热门旅游景点推荐系统设计与实现
  • 前端虚拟列表原理与 React 实战实现
  • VSCode Copilot 接入智谱 GLM-4.6 配置指南
  • 国产数据库新机遇:电科金仓融合技术同步全球竞争
  • Web 服务与 I/O 模型详解及 Nginx 实战
  • C++ 泛型编程与模板详解
  • 我们的数据到底有多安全?网络安全经济学分析
  • Python 数据分析入门:集中趋势与离散程度详解

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online