Java VM Survivor Old Gen 中的 Survivor、Survivor 2

Java Survivor1, Survivor2 in VM Survivor Old Gen

我认为,在 Java-堆内存模型中

是同义词。这将是 Java 放置对象的区域,它在一些 GC 循环中幸存下来。
在 VisualVM 中,我看到,这是两个不同的区域,甚至还有多个 Survivor 区域。

java 内存中的 Survivor 和 Old Gen 区域有什么区别?

编辑:

看来,Survivor(连同Eden)属于Young Gen, 看

幸存者区域有两个,S0和S1。在任何时候,其中之一是从space到space

当Minor GC发生时,它从Edenspace收集对象,幸存者被放置在到space.

上一次 GC 中位于 space 的 的对象也被移动到 到 space, 除非他们达到了幸存者阈值,这意味着这个对象是一个长期存在的对象。在这种情况下,它被提升到老一代。

在此之后,幸存者 space 被交换,所以 到 space 总是清楚的。

只有两个幸存者space。在图像中,SpacesGraphs 区域只是相同信息的不同表示。

您可以阅读更多相关内容 here