新生代与老年代

在Java虚拟机(JVM)中,内存被划分为多个不同的区域,其中包括新生代(Young Generation)和老年代(Old Generation)。

新生代是用于存储新创建的对象的区域。大多数对象在创建后很快就变得不可达(unreachable),因此新生代被设计成较小且较短暂的区域。新生代又分为两个部分:

Eden空间:这是对象最初被创建的地方。大多数对象在Eden空间创建,并且在进行垃圾回收时会被清理掉。

Survivor空间:当进行垃圾回收时,Eden空间中仍然存活的对象会被移动到Survivor空间。Survivor空间一般有两个,分别称为From空间和To空间。在垃圾回收过程中,存活的对象会从一个Survivor空间复制到另一个Survivor空间,同时清理掉不再存活的对象。

垃圾回收器在新生代的垃圾回收过程称为Minor GC(或Young GC)。Minor GC发生频率较高,一般会暂停应用程序的执行。

老年代是用于存储生命周期较长的对象的区域。当对象在新生代经历多次垃圾回收后仍然存活,它们就会被移到老年代中。老年代相对于新生代来说更大,可以存储更多的对象。

垃圾回收器在老年代的垃圾回收过程称为Major GC(或Full GC)。Major GC发生的频率较低,一般会导致较长的停顿时间。

新生代和老年代的划分是为了优化垃圾回收的效率。由于大多数对象的生命周期较短,所以新生代采用了一种基于复制的垃圾回收算法,可以快速地回收不再存活的对象。而老年代则采用了其他更适合存储长生命周期对象的垃圾回收算法。

相关推荐
penguin_bark6 分钟前
69. x 的平方根
算法
这可就有点麻烦了16 分钟前
强化学习笔记之【TD3算法】
linux·笔记·算法·机器学习
救救孩子把16 分钟前
深入理解 Java 对象的内存布局
java
落落落sss18 分钟前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
苏宸啊21 分钟前
顺序表及其代码实现
数据结构·算法
万物皆字节24 分钟前
maven指定模块快速打包idea插件Quick Maven Package
java
lin zaixi()25 分钟前
贪心思想之——最大子段和问题
数据结构·算法
FindYou.25 分钟前
C - Separated Lunch
算法·深度优先
夜雨翦春韭31 分钟前
【代码随想录Day30】贪心算法Part04
java·数据结构·算法·leetcode·贪心算法
我行我素,向往自由37 分钟前
速成java记录(上)
java·速成