【问题标题】:Java Survivor1, Survivor2 in VM Survivor Old GenVM Survivor Old Gen 中的 Java Survivor1、Survivor2
【发布时间】:2016-01-06 13:08:11
【问题描述】:
我想,在 Java-Heap-Memory 模型中
是同义词。这将是 Java 放置对象的区域,它在一些 GC 周期中幸存下来。
在 VisualVM 中我看到,这是两个不同的区域,甚至还有多个 Survivor 区域。
java内存中Survivor和Old Gen区域有什么区别?
编辑:
看来,Survivor(连同Eden)属于Young Gen,
看
【问题讨论】:
标签:
java
memory-management
garbage-collection
jvm
java-8
【解决方案1】:
有两个幸存者区域,S0 和 S1。在任何时候,其中之一是 from space 或 to space。
当 Minor GC 发生时,它会从 Eden 空间收集对象,并将幸存者放置在 to 空间中。
上一次 GC 中的对象,位于 from 空间 中的对象也被移动到 to 空间,除非它们已达到幸存者阈值,这意味着该对象是一个长寿的对象。在这种情况下,它被提升到老一代。
在这之后,幸存者空间被交换,所以 to 空间总是清晰的。
只有两个幸存者空间。在图像中,Spaces 和 Graphs 区域只是相同信息的不同表示。
您可以阅读有关此here 的更多信息。