老师,我有这样一个疑问,就是在新生代区,现在划分了三部分:Eden区、S0(from)区、S1(to)区,以便提高检索和垃圾回收的效率,同时这三个区域的搭配也会避免空间碎片的问题。
但是,我现在提出一个疑问:为啥要是两个幸存者空间?一个不行吗?
我推了一下,觉得是可以的(但实质是自己的一厢情愿):
1、刚开始的时候eden区域s0区是空的,当eden区满了后,minorGC后,将存活的放在from区。
2、再次,eden区满了,就将存活的对象存放在from区(我以为是连续的)。
3、from区满了,复制到old区。
但是,我在查看博客时,发现人家说的是这里的from里面的多次存放很可能会是不连续的,会造成空间碎片,需要两个进行整理。
那为啥是不连续的,它的数据结构是啥样的?二维数组、还是说存放的算法是随机的