目录
- 一、知识回顾
- 二、from区和 to区的交换
- 三、总结
一、知识回顾
什么是年轻代?
年轻代
:是 JVM 堆内存中专门用于存储新创建对象的部分,旨在高效处理大量短时间内可能被回收的对象。
年轻代有哪几部分?
-
Eden区
:年轻代的主要区域,新创建的对象通常首先被分配到此区域。 -
Survivor区
:年轻代除了 Eden区外,还包括两个大小相等的 Survivor区,通常称为S0区
、S1区
。这两个区域在 GC 过程中交替扮演 “from” 和 “to” 的角色。
from区
:在某次垃圾收集(Minor GC)时,充当源区域的角色,存储着上次 GC 后存活下来的对象。to区
:在同一 GC 周期中,充当目标区域的角色,接收从 from 区复制过来的存活对象,以及直接分配到该区域的新对象。
什么是 Minor GC?
Minor GC
又称 年轻代垃圾回收,是 Java 虚拟机(JVM)进行垃圾回收的一种特定形式,主要针对年轻代内存区域(Young Generation)。年轻代是堆内存中的一部分,用于存储新创建的对象,尤其是生命周期较短的对象。
二、from区和 to区的交换
在每次 Minor GC 时,Eden区和当前的 from区中存活的对象会被复制到空闲的 to区。复制完成后,from区和 Eden区的内容被清空,这两个区域的角色互换,即原来的 to区变为新的 from区,原来的 from区变为新的 to区。这种设计有助于减少内存碎片,并通过复制算法快速回收大部分死亡对象。
三、总结
综上所述,在 JVM 的年轻代(Young Generation)内存管理中,S0区
、S1区
和from区
、to区
实际上是指同一组内存区域的不同称呼:
S0区
和S1区
是 Survivor区的 正式名称,用于明确标识年轻代中的两个 Survivor 区域。from区
和to区
则是根据垃圾收集过程中的角色,动态赋予 Survivor区的 临时名称,表示它们在当前 GC 周期中分别作为 复制源 和 复制目标。
整理完毕,完结撒花~🌻