当前位置: 首页 > news >正文

Young GC 的触发时机

Young GC,也称为 Minor GC,其最根本、最直接的触发条件是:

当 JVM 尝试为一个新对象在 Eden 区分配内存,但发现 Eden 区剩余空间不足以容纳该对象时。

传统分代堆 (固定边界)
┌─────────────────┐
│ Eden │ ← 固定大小
├─────────────────┤
│ Survivor 0 │ ← 固定大小
├─────────────────┤
│ Survivor 1 │ ← 固定大小
├─────────────────┤
│ 老年代 │ ← 固定大小
└─────────────────┘
————————————————

  1. 初始状态

    • 我们有两个 Survivor 区:S0S1。在任一时间点,其中一个被标记为 From Survivor(存有上一轮GC存活下来的对象),另一个是空的,被标记为 To Survivor
    • Eden 区是满的(因为触发了GC)。
  2. GC 开始

    • GC 线程会同时扫描 Eden 区From Survivor 区
    • 将这两个区域中所有存活的对象,一次性全部复制到 To Survivor 区
    • 在复制过程中,对象的年龄会增加1(来自From Survivor 区的老对象年龄+1,来自Eden的新对象年龄变为1
  3. 清空与交换

    • 在复制完成后,Eden 区From Survivor 区 就被完全清空了(因为它们里面的存活对象都被搬走了,剩下的都是垃圾,直接忽略)。
    • 然后,两个 Survivor 区的角色发生交换:原来的 To Survivor 现在变成了 From Survivor,准备迎接下一次GC。原来的 From Survivor(现在已是空的)则变成了 To Survivor

触发 Young GC 后:

  1. 复制
    • Eden 中存活的对象 + S0 中存活的对象 → 全部复制到 S1
    • 在复制过程中,对象的年龄会增加1(来自S0的老对象年龄+1,来自Eden的新对象年龄变为1)。

为什么设计成两个 Survivor 区?

这种“From-To”的复制算法核心目的是解决内存碎片化问题

  • 如果只有一个 Survivor 区,经过几次GC后,存活对象在其中被来回搬动,会产生大量内存碎片。
  • 而使用两个 Survivor 区,通过每次GC都将存活对象紧凑地复制到另一个空的 Survivor 区,可以确保 To Survivor 区在复制完成后总是紧凑无碎片的,这为后续的内存分配提供了极大的便利。

http://www.dtcms.com/a/589077.html

相关文章:

  • 专业做网站照片免费咨询法律律师电话号码
  • GAN vs. VAE:生成对抗网络 vs. 变分自编码机
  • Docker打包步骤
  • 【数据集+源码】基于yolov11+streamlit的玉米叶片病虫害检测系统
  • VP8 是什么?
  • Rust底层编程:安全与性能的完美平衡
  • 如何删除自己建的网站无忧网站建设公司
  • HTTP-大文件传输处理
  • [linux仓库]线程同步与生产者消费者模型[线程·陆]
  • 【算法】day17 多维动态规划
  • 网站建设费算什么费用山东青岛网站建设seo优化
  • 【复习】计网每日一题1109---iBGP、AS
  • 30.注意力汇聚:Nadaraya-Watson 核回归
  • 广州营销型网站建设培训班网站设计制作太原
  • RV1126 NO.46:RV1126+OPENCV对视频流进行视频膨胀操作
  • 分布式的cap,base,raft
  • 2025年11月份下半年系统架构师真题(回忆版)
  • C语言刷题-编程(一)(基础)
  • 日常踩用的坑笔记
  • dede制作的网站挂马中国深圳航空公司官网
  • 网站开发工作需要什么专业织梦如何做网站
  • Java 面向对象进阶:抽象类、接口与 Comparable 接口
  • springboot移动端购物系统设计与实现(代码+数据库+LW)
  • 说一下Redis为什么快
  • web网页开发,在线%台球俱乐部管理%系统,基于Idea,html,css,jQuery,jsp,java,ssm,mysql。
  • 【C++STL】入门不迷路:容器适配器 + deque+stack/queue 使用 + 模拟实现指南!
  • 做设计挣钱的网站备案的网站有什么好处
  • 项目环境变量配置全攻略
  • AIGC|深圳AI优化企业新榜单与选择指南
  • 小红书MCP服务器 - 技术架构深度解析