老师,我有这样一个疑问,就是在新生代区,现在划分了三部分:Eden区、S0(from)区、S1(to)区,以便提高检索和垃圾回收的效率,同时这三个区域的搭配也会避免空间碎片的问题。


但是,我现在提出一个疑问:为啥要是两个幸存者空间?一个不行吗?

我推了一下,觉得是可以的(但实质是自己的一厢情愿):

1、刚开始的时候eden区域s0区是空的,当eden区满了后,minorGC后,将存活的放在from区。

2、再次,eden区满了,就将存活的对象存放在from区(我以为是连续的)。

3、from区满了,复制到old区。


但是,我在查看博客时,发现人家说的是这里的from里面的多次存放很可能会是不连续的,会造成空间碎片,需要两个进行整理。

那为啥是不连续的,它的数据结构是啥样的?二维数组、还是说存放的算法是随机的

相关课程:JAVA 全系列>第二十六阶段:JVM实战和BATJ大厂面试重难点>JVM调优>JDK&JRE&JVM

©2014-2023 百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备13018289号-12    营业执照    经营许可证:京B2-20212637