关注
三、为什么2个 Survivor 空间可以达到要求?
问题很清楚了,无论 Eden 和 Survivor 的比例怎么设置,在只有一个 Survivor 的情况下,总体上看在新生代空间满一半的时候就会触发一次 Minor GC 。那有没有提升的空间呢?比如说永远在新生代空间满 80% 的时候才触发 Minor GC ?
事实上是可以做到的:我们可以设两个 Survivor 空间( From Survivor 和 To Survivor )。比如,我们把 Eden : From Survivor : To Survivor 空间大小设成 8 : 1 : 1 ,对象总是在 Eden 区出生, From Survivor 保存当前的幸存对象, To Survivor 为空。一次 gc 发生后:
1)Eden 区活着的对象 + From Survivor 存储的对象被复制到 To Survivor ;
2) 清空 Eden 和 From Survivor ;
3) 颠倒 From Survivor 和 To Survivor 的逻辑关系: From 变 To , To 变 From 。
可以看出,只有在 Eden 空间快满的时候才会触发 Minor GC 。而 Eden 空间占新生代的绝大部分,所以 Minor GC 的频率得以降低。当然,使用两个 Survivor 这种方式我们也付出了一定的代价,如 10% 的空间浪费、复制对象的开销等。
查看原帖
4 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-04 11:10
哈尔滨工业大学 嵌入式工程师 点赞 评论 收藏
分享
05-29 20:34
门头沟学院 C++ 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 聊聊这家公司值得去吗 #
230362次浏览 2167人参与
# 职场人,说说你的烦心事 #
8282次浏览 65人参与
# 你认为哪个岗位找工作最卷 #
9581次浏览 34人参与
# 职场上哪些事情令人讨厌 #
16533次浏览 81人参与
# 一人一个landing小技巧 #
78126次浏览 1115人参与
# kpi面有什么特征 #
30216次浏览 174人参与
# 秋招最大的收获是什么? #
33776次浏览 296人参与
# 大家每天通勤多久? #
41873次浏览 329人参与
# 职场破防瞬间 #
234795次浏览 2125人参与
# 小红书求职进展汇总 #
56009次浏览 483人参与
# 为了找工作你投递了多少公司? #
8234次浏览 107人参与
# 职场吐槽大会 #
204847次浏览 1631人参与
# tplink提前批进度交流 #
162564次浏览 1377人参与
# 机械制造岗投递时间线 #
22658次浏览 345人参与
# 通信硬件牛牛的实习日记 #
7078次浏览 65人参与
# 硬件人你反向读研了吗 #
41709次浏览 630人参与
# 许愿池 #
283009次浏览 2868人参与
# 担心入职之后被发现很菜怎么办 #
126200次浏览 753人参与
# 找工作前vs找工作后的心路变化 #
9543次浏览 102人参与
# 聊聊你的职场新体验 #
157238次浏览 1367人参与