Java 在幸存者空间和伊甸园空间上是否也执行次要GC?

Java 在幸存者空间和伊甸园空间上是否也执行次要GC?,java,garbage-collection,Java,Garbage Collection,我知道年轻一代在伊甸园空间进行小型GC。在GC中幸存的对象将移动到幸存者空间(从)。一旦(From)超出空间,对象将移动到幸存者空间(to)。在幸存者空间上也执行次要GC吗?幸存者空间是年轻一代的一部分,因此将在幸存者空间上执行次要GC。如果一个对象在若干次次要gc中幸存下来,那么它将被移动到旧一代 有关详细信息:从内存分配开始,将执行以下操作: 让我们假设两个幸存者空间为X,Y以摆脱混乱 第一次启动应用程序时,创建的对象将移动到Eden空间。在此阶段,X、Y为空 当伊甸园空间已满时,伊甸园空间

我知道年轻一代在伊甸园空间进行小型GC。在GC中幸存的对象将移动到幸存者空间(从)。一旦(From)超出空间,对象将移动到幸存者空间(to)。在幸存者空间上也执行次要GC吗?

幸存者空间是年轻一代的一部分,因此将在幸存者空间上执行次要GC。如果一个对象在若干次次要gc中幸存下来,那么它将被移动到旧一代


有关详细信息:

从内存分配开始,将执行以下操作:

让我们假设两个幸存者空间为X,Y以摆脱混乱

  • 第一次启动应用程序时,创建的对象将移动到Eden空间。在此阶段,X、Y为空
  • 当伊甸园空间已满时,伊甸园空间将发生次要GC,并将活动对象发送到X幸存者空间。在此阶段,X有对象,但Y为空
  • 当下一次小GC发生时,它发生在伊甸园以及X幸存者空间,剩余的活物体被发送到Y救世主空间。在此阶段,X为空,但Y具有活动对象

  • 因此,每次重复这些步骤时,您都可以参考以获得更好的理解,从上面的解释来看,小GC确实也发生在幸存者空间。

    我之前浏览了cubrid博客。然而,以下几点让我感到困惑-1。在伊甸园空间中执行一次GC后,幸存对象将移动到其中一个幸存空间。2.在伊甸园空间中进行GC后,这些对象被堆积到幸存者空间中,其他幸存对象已经存在
    上面说,一旦一个幸存者空间满了,幸存的物体就会移动到另一个幸存者空间。然后,已满的幸存者空间将更改为完全没有数据的状态
    当在幸存者空间中执行次要GC时,次要GC将始终在eden上执行,并在此过程中,将活动对象移动到幸存者空间。在此次要GC期间,如果幸存者空间(从)满了,幸存者空间(从)将与其他幸存者空间(到)交换。当我们说“交换”-这是否意味着一旦(从)满了,次要GC将在伊甸园中运行,并且(从)中的幸存对象将与(到)交换?对不起,我不清楚。从和到的2个幸存者空间中,到将始终为空。当“来自幸存者”空间满了时,一个次要GC将在将活动对象移动到时检查是否有任何死亡对象。在幸存者空间上收集和交换的过程可能会发生多次,在幸存者对象被移动到永久空间之前。按照链接,它对垃圾收集有很好的解释。对于您的查询,请阅读标签为“分代垃圾收集过程”的选项卡。该链接确实很有用。谢谢