请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Survivor区的问题

当Eden区满了时,触发一次YGC,GC过后有个对象还存活,就会被放入Survivor区,那如果Survivor区这个时候也是满的,并且其内部的对象年龄没有达到15,会怎么样?是有一部分直接晋升老年代吗?这一部分是多少?是Eden区即将放入Survivor区的对象数量吗?这一部分将晋升老年代的对象是Survivor区中年龄偏大的那些吗?

正在回答

1回答

Survivor区分成from和to,GC开始前,对象是存在于eden和from区的,在一次gc后留下的对象进入to区,然后from区和to区交换位置,就是原来的from相当于现在的头,因为清空了,原来的to相当于现在的from区,当然这都是逻辑上的,并没有物理上的操作。如果to区也满了,就全部进入老年代中。

你说的场景,如果Eden满了,Survivor也满了,也就是gc到时候,无法进入to区,也就是to区满了,那么会先把to区的对象全部放入老年代,不管对象年龄是否到15都移到老年代了,如果这个时候,to区还是放不下新对象,那就直接把新对象放到老年代


0 回复 有任何疑惑可以回复我~
  • 提问者 无心铁憨憨 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-07-29 13:59:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信