我知道年轻代分为Eden区、From区、To区。 但有人可以向我解释一下,如果我们只有 2 个区域,比如第一个区域、第二个区域,那可以吗?
我认为我们仍然可以只用 2 个区域来复制垃圾收集,如下所示。
- 新物体出现 => 将它们放在第一
- 当 1st 已满时,将 Activity 的复制到 2nd,并删除 1st 上的所有内容
- 新物体再次出现 => 将它们放在第二位
- 当 2nd 已满时,将 Activity 的复制到 1st 并在 2nd 上删除它们 等等
那么,为什么我们还需要一个额外的(伊甸园)区域?
这对性能更好吗? 提前致谢。
最佳答案
在你的方案中,对象不能占用超过一半的 Young Gen,因此 50% 的 Young Gen 内存总是被浪费。
单独的“往返”空间通常比“伊甸园”小。这有助于减少内存开销,同时保留快速复制收集器的优点。
关于java - 为什么年轻代需要3个区域来进行垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49869589/