新生代与老年代

在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发生的频率较低,一般会导致较长的停顿时间。

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

相关推荐
架构源启11 小时前
文档接入与智能解析:基于 Spring AI 1.1.x 的多格式解析、版面理解与结构化抽取
java·人工智能·spring
可编程芯片开发13 小时前
基于MATLAB的PEF湍流风场生成器模拟与仿真
算法
罗西的思考13 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (9)--- Reward Judging
人工智能·算法·机器学习
Mr.HeBoYan15 小时前
一次持续三天才出现的丢包故障——深入解析 DPDK Memory Ordering、rte_ring 与 CPU Memory Barrier (下)
linux·网络·算法·架构·dpdk
大模型码小白15 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
wabs66615 小时前
关于图论【深度优先搜索的理论基础】
算法·深度优先·图论
名字还没想好☜16 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
先吃饱再说16 小时前
LeetCode 101. 对称二叉树
算法
音符犹如代码16 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·spring boot·guava
前端炒粉16 小时前
手撕小汇总
java·前端·javascript