关注
我们知道,目前主流的虚拟机实现都采用了分代收集的思想,把整个堆区划分为新生代和老年代;新生代又被划分成 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 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 6月18日,我将站上法庭,正式起诉美团。我送出的每一单快件,都是我人生碎片的一部分。我会一直前进,拿回在海外SaaS失去的一切。6.4W
- 2... 研一快手后端开发,一周速通,附一二面面经1.5W
- 3... 毕业一年在回到学校的感觉真不一样1.3W
- 4... 挚文集团-陌陌笔试202506069742
- 5... 25校招 双非硕 拿下大厂🐧7405
- 6... 秋招和考公两手抓的不完全攻略6886
- 7... 金山办公测试春招一面_珠海5616
- 8... 乡下人第一次到上海租房,隔壁sexy声音搞的我火气很大4968
- 9... 26学院本游戏客户端鼠鼠求职碎碎念+总结4568
- 10... 华为暑期实习3978
正在热议
更多
# 我的实习收获 #
33805次浏览 520人参与
# 安利/避雷我的专业 #
73606次浏览 515人参与
# 实习吐槽大会 #
36990次浏览 171人参与
# 我在牛爱网找对象 #
186356次浏览 1402人参与
# 晒一晒你的工位 #
86830次浏览 309人参与
# 你后悔选择现在的专业吗 #
81877次浏览 671人参与
# 你觉得专业和学校哪个对薪资影响最大 #
58032次浏览 472人参与
# 移动求职进展汇总 #
1666次浏览 17人参与
# 2025牛客秋招季 #
5797次浏览 183人参与
# 双非能在秋招上岸吗? #
215416次浏览 1150人参与
# 求职遇到的搞笑事件 #
113517次浏览 772人参与
# 第一份工作应该选高薪还是热爱? #
61716次浏览 561人参与
# 我的租房踩坑经历 #
32298次浏览 331人参与
# 机械人与华为的爱恨情仇 #
113331次浏览 938人参与
# 我的国央企投递进展 #
43117次浏览 268人参与
# 26届秋招投递记录 #
4651次浏览 123人参与
# 穿越回高考你还会选现在的专业吗 #
23950次浏览 279人参与
# 牛友们,签完三方你在忙什么? #
95151次浏览 841人参与
# 地方国企笔面经互助 #
30001次浏览 98人参与
# 招银网络求职进展汇总 #
113312次浏览 741人参与