标识-识别正在使用的、不是由垃圾收集器使用的内存块的过程,这是第一步。
正常删除-删除未引用对象的过程,将引用对象和指针保留到空闲空间。
使用压缩删除-除了删除未引用的对象,它还将压缩其余的引用对象,方法是将对象移动到一起,以使
新的内存分配更容易,速度更快。
======================================================================
===================================================================
新创建的对象从年轻一代开始。年轻一代也被称为托儿所,因为新的对象开始在这里生活。年轻一代进一步细分为一个伊甸园空间,在那里所有新的对象开始,和两个幸存者空间,其中的对象是从伊甸园移动后幸存一个垃圾收集周期。当对象是从年轻一代收集的垃圾时,这些称为小垃圾收集事件,
所有新的物体首先是在伊甸园空间中创建的。当一个小GC集合达到JVM决定的阈值时,它就会启动。引用对象从伊甸园空间移动到第一个幸存者空间(“伊甸园”和“从”到“)。清除伊甸园空间时,未引用的对象将被删除。
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
两个幸存者空间(从和到)都是空的。 当一个小GC集合发生时,所有引用的对象都被移动到幸存者空间。 GC结束后,将交换幸存者空格“from”和“to”角色(名称)。S1是上一次垃圾收集(GC)期间的“to”角色。N 现在S1被填充并接受‘From’角色,而S0是空的,并且将接受‘to’角色。
==================================================================
在一个小GC之后,当老化对象达到一定的年龄阈值(默认情况下,现代JVM阈值设置为15个GC周期)时,它们将从年轻一代提升到老一代。长寿的对象最终会从年轻一代移到老一代。当小型GC继续出现时,对象将继续被提升到旧代空间,并且它将开始被填充,并将出现一个主要GC。当对象是从老一代收集的垃圾时,就会发生主要的垃圾收集。
===================================================================
元数据(如类和方法)存储在永久生成中。不再使用的类可能会从永久生成中回收垃圾。在完全垃圾收集事件期间,所有代中未使用的对象都是垃圾收集。
=========================================================================
清除堆内存中不同部分的垃圾收集事件通常称为小事件、主要事件和完整GC事件。但是,由于“次要”、“主要”和“完整的GC”这几个术语被广泛使用,而且没有一个恰当的定义,我们将看看对所有这些GC的解释。