关注
我们知道,目前主流的虚拟机实现都采用了分代收集的思想,把整个堆区划分为新生代和老年代;新生代又被划分成 Eden 空间、 From Survivor 和 To Survivor 三块区域。
为什么非得是两个 Survivor 空间呢?要回答这个问题,其实等价于:为什么不是0个或1个 Survivor 空间?为什么2个 Survivor 空间可以达到要求?
一、为什么不是0个 Survivor 空间?
这个问题等价于:为什么需要 Survivor 空间。我们看看如果没有 Survivor 空间的话,垃圾收集将会怎样进行:一遍新生代 gc 过后,不管三七二十一,活着的对象全部进入老年代,即便它在接下来的几次 gc 过程中极有可能被回收掉。这样的话老年代很快被填满, Full GC 的频率大大增加。我们知道,老年代一般都会被规划成比新生代大很多,对它进行垃圾收***消耗比较长的时间;如果收集的频率又很快的话,那就更糟糕了。基于这种考虑,虚拟机引进了“幸存区”的概念:如果对象在某次新生代 gc 之后任然存活,让它暂时进入幸存区;以后每熬过一次 gc ,让对象的年龄+1,直到其年龄达到某个设定的值(比如15岁), JVM 认为它很有可能是个“老不死的”对象,再呆在幸存区没有必要(而且老是在两个幸存区之间反复地复制也需要消耗资源),才会把它转移到老年代。
总之,设置 Survivor 空间的目的是让那些中等寿命的对象尽量在 Minor GC 时***掉,最终在总体上减少虚拟机的垃圾收集过程对用户程序的影响。
查看原帖
3 评论
相关推荐
查看14道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 中国银行软件中心合肥编程测评3.0W
- 2... 跟室友吃完一顿饭,我才发现自己输在信息差上1.9W
- 3... 放弃其他大厂,我为什么选择携程机票BU?1.3W
- 4... 腾讯云智二面(已挂)8546
- 5... AI产品面试复盘8154
- 6... 招银网络科技春招6433
- 7... [拼多多offer]暑期实习终于结束了,太累了兄弟们,现在的大环境太难了6433
- 8... 同学去了腾讯、蔚来,而我去了一个小厂,后来我也...6259
- 9... 腾讯光子游戏客户端开发实习二面主管面面经(已oc)4991
- 10... 今年是真的更难了吗,还是单纯我太菜了4755
正在热议
更多
# 哪些AI项目值得做? #
19855次浏览 505人参与
# 正在春招的你,也参与了去年秋招吗? #
397069次浏览 2729人参与
# 华泰星战营,提前锁定校招offer #
12256次浏览 382人参与
# 简历上如何体现你的“AI”能力? #
10206次浏览 232人参与
# 你总挂在第__面? #
7240次浏览 78人参与
# 找不到大厂实习可以去小厂吗? #
15485次浏览 169人参与
# 非技术岗薪资爆料 #
528866次浏览 3095人参与
# 实习时最怕听到的一句话 #
17585次浏览 161人参与
# 没有面试的日子里,你在做什么 #
10161次浏览 306人参与
# 你简历上最心虚的一句话 #
16563次浏览 200人参与
# 90后北漂现状 #
38899次浏览 225人参与
# 你知道最慷慨和最抠的公司分别是 #
8501次浏览 62人参与
# 非技术投递记录 #
726587次浏览 6948人参与
# 刚入职就____,这样正常吗? #
141254次浏览 685人参与
# 25届嵌入式真的回暖了吗 #
52387次浏览 383人参与
# 拼多多工作体验 #
57697次浏览 417人参与
# 联通求职进展汇总 #
10338次浏览 30人参与
# 吉利求职进展汇总 #
109948次浏览 415人参与
# 正在实习的你,有转正机会吗? #
513157次浏览 3089人参与
# 机械人还在等华为开奖吗? #
334278次浏览 1630人参与
# 产品每日一题 #
97209次浏览 714人参与

携程工作强度 159人发布