我在Oracle网站上找到了“Java垃圾收集基础”教程:
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
包括以下内容:
分代垃圾收集过程 现在您已经了解了为什么堆被分成不同的代,现在是时候看看这些空间是如何相互作用的。后面的图片将介绍JVM中的对象分配和老化过程。
首先,将任何新对象分配给伊甸园空间。 两个幸存者空间都是空的。
但是在这张图片中,“来自”幸存者空间不是空的,它有两个物体,一个是1岁,另一个是3岁。这是一个错误吗?
答案 0 :(得分:2)
不,这不是错误。
图像只是不显示第一次次要垃圾回收之前的情况。链接中的子弹2和3说明:
- 当伊甸园空间填满时,会触发轻微的垃圾收集。
- 引用的对象被移动到第一个幸存者空间。清除伊甸园空间时,将删除未引用的对象。
醇>
因此,伊甸园空间中的引用对象在次要垃圾收集期间移动到幸存者空间,并且每个后续次要GC递增幸存对象的年龄。因此,根据图像,在分配新对象之前必须至少有3个次要GC。