7.1、前文回顾
让我们先来回顾一下我们已经学到的知识。现在,大家应该都明白了,在我们日常编写代码时,所创建的对象通常是首先在新生代区域进行分配的。然后,当一些方法执行完毕后,大部分位于新生代区域中的对象将不再被引用,从而变成垃圾对象。如下图所示:
随着程序的持续执行,新生代区域中会逐渐积累大量对象。这其中,大部分对象都是一些短生命周期的对象,它们在被使用一段时间后,便不再被任何其他对象引用,因此这些对象实际上变成了垃圾对象。然而,由于内存资源是有限的,当新生代区的可用内存不足时,就会触发一次名为Minor GC的垃圾回收机制。Minor GC的主要任务就是清理新生代区中的垃圾对象,即那些不再被引用的旧对象。通过回收这些垃圾对象,Minor GC能够为新生区腾出大量的内存空间,以便用于存储新创建的对象。如下图所示:
对于那些在长周期内持续存活的对象,它们将在新生代中度过多个垃圾回收周期。每一次成功逃过垃圾回收,它们的年龄将增加一岁。随着时间的推移,当对象达到十岁以上的“老年”阶段时,它们将被迁移到老年代中。如下图: