Heap中新一代和终生代之间的差异

时间:2016-03-29 06:22:23

标签: java

我已经读过新一代存储新创建的对象,而终身代存储对象存活下来。但我怀疑编译器将如何知道特定对象是否会存活?什么时候它会把特定的对象放在终身一​​代?请指导我。

1 个答案:

答案 0 :(得分:1)

年轻一代分为3个空间。

  • 一个伊甸园空间
  • 两个幸存者空间

共有3个空格,其中两个是幸存者空间。每个空间的执行过程顺序如下:

  1. 大多数新创建的对象位于伊甸园空间。
  2. 在伊甸园空间中的一个GC之后,幸存的物体被移动到一个幸存者空间。
  3. 在伊甸园空间中的GC之后,物体被堆积到幸存者空间中,其中存在其他幸存物体。
  4. 一旦幸存者空间已满,幸存的物体将被移动到另一个幸存者空间。然后,已满的幸存者空间将更改为根本没有数据的状态。
  5. 经过多次重复的这些步骤中存活的对象将移至旧一代。
  6. 信息来自this article。我建议阅读它以便更深入了解。