【JVM基础11】——垃圾回收-说一下JVM的分代回收?

目录

  • [1- 引言:分代回收](#1- 引言:分代回收)
    • [1-1 什么是分代回收(What)](#1-1 什么是分代回收(What))
    • [1-2 为什么要用分代回收?(Why)](#1-2 为什么要用分代回收?(Why))
  • [2- ⭐核心:分代回收工作机制](#2- ⭐核心:分代回收工作机制)
    • [2-1 工作机制](#2-1 工作机制)
    • [2-2 MinorGC、Mixed GC、FullGC的区别是什么](#2-2 MinorGC、Mixed GC、FullGC的区别是什么)
  • [3- 总结](#3- 总结)
    • [3-1 说一下 JVM 的分代回收](#3-1 说一下 JVM 的分代回收)
    • [3-2 MinorGC、Mixed GC、FullGC的区别是什么](#3-2 MinorGC、Mixed GC、FullGC的区别是什么)

1- 引言:分代回收

1-1 什么是分代回收(What)

  • JVM(Java虚拟机)的分代回收(Generational Garbage Collection)是一种基于对象生命周期特征的垃圾回收策略。分代回收将堆内存划分为几个不同的区域,主要包括年轻代(Young Generation)和老年代(Old Generation) 。

在Java 8 中,堆被分为了两个部分:新生代老年代 ,其比例为 1 :2

  • 在新生代空间中,分为了 Eden 区 和 survivor 区
    • Eden 伊甸园区: 新生的对象都分配到这里
    • Survivor 幸存者区: 分为 from 和 to
    • Eden 区、from 区 、 to 区的内存比例为 8:1:1

1-2 为什么要用分代回收?(Why)

  • 采用分代回收的主要原因是基于对象生命周期的特点,通过这种策略可以提高垃圾回收的效率和性能。

2- ⭐核心:分代回收工作机制

2-1 工作机制

  1. A对象的创建与回收过程
  • 当新创建的对象,都会先分配到 Eden 区
  • 当 Eden 区域内存不足的时候,标记 伊甸园区from(现阶段没有) 的存活对象。
  • 假设 A 对象是存活的对象,就将存活的对象采用复制算法复制到 to 中,复制完成之后,伊甸园区和 from区域的内存都要得到释放。
  1. 假设经过一段时间又来了新的对象
  • 此时新来的对象又造成了 Eden伊甸园区的内存不足,此时标记 Eden 区和 to 区域的存活对象,将存活的对象复制到 from 区,清空 Eden区 和 to区。
  1. 假设此时又来了一批新的对象------A晋升
  • 此时的 A 对象由于移动了太多次,如果 A 还是存活对象,就会被认为是存活时间较长,会被移动到老年代。
  • 当幸存者区的对象熬过几次回收(最多15次),晋升到老年代(幸存者区内存不足或大对象会导致提前晋升)

2-2 MinorGC、Mixed GC、FullGC的区别是什么

  • MinorGC【young GC 】发生在 新生代 的垃圾回收,暂停时间短。(STW)
    • STW(Stop-the-World):暂停所有应用程序线程,等待垃圾回收的完成
    • 如果暂停时间段,说明垃圾回收的效率较高,暂停时间长说明垃圾回收的效率较低。
  • Mixed GC 新生代+老年代 部分区域的垃圾回收,G1收集器持有
  • Full GC:新生代+老年代 完全垃圾回收,暂停时间较长

3- 总结

3-1 说一下 JVM 的分代回收


3-2 MinorGC、Mixed GC、FullGC的区别是什么


相关推荐
Joeysoda8 小时前
Java数据结构 时间复杂度和空间复杂度
java·开发语言·jvm·数据结构·学习·算法
18你磊哥8 小时前
java重点学习-JVM组成
java·开发语言·jvm
蜜桃小阿雯10 小时前
JAVA开源项目 校园美食分享平台 计算机毕业设计
java·jvm·spring boot·spring cloud·intellij-idea·美食
longlongqin11 小时前
JIT(即时编译)技术
jvm
ZachOn1y17 小时前
Java 入门指南:JVM(Java虚拟机)—— 双亲委派模型(Parent Delegation Model)
java·jvm·后端·java-ee·团队开发·个人开发
寻求出路的程序媛19 小时前
JVM —— 类加载器的分类,双亲委派机制
java·jvm·面试
深鱼~19 小时前
【JVM】垃圾回收机制|死亡对象的判断算法|垃圾回收算法
jvm
Lill_bin19 小时前
JVM内部结构解析
jvm·后端·spring cloud·微服务·云原生·ribbon
视觉小鸟19 小时前
【JVM安装MinIO】
前端·jvm·chrome
ZachOn1y21 小时前
Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 新一代垃圾回收器 ZGC 收集器
java·开发语言·jvm·后端·java-ee·个人开发