【问题标题】:difference between new generation and tenured generation in HeapHeap中新生代和终身代的区别
【发布时间】:2016-03-29 06:22:22
【问题描述】:

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

【问题讨论】:

    标签: java


    【解决方案1】:

    年轻代分为3个空间。

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

    一共有3个空格,其中两个是Survivor空格。各个空间的执行过程顺序如下:

    1. 大部分新创建的对象都位于 Eden 空间中。
    2. 在 Eden 空间中进行一次 GC 后,幸存的对象被移动到 Survivor 空间之一。
    3. 在 Eden 空间中进行 GC 后,对象会堆积到 Survivor 空间中,而其他幸存对象已经存在。
    4. 一旦幸存者空间已满,幸存的对象将被移动到另一个幸存者空间。然后,已满的 Survivor 空间将变为完全没有数据的状态。
    5. 在这些重复多次的步骤中幸存下来的对象将移至老年代。

    信息取自this article。我建议阅读它以加深理解。

    【讨论】:

      猜你喜欢
      • 2019-02-01
      • 2014-02-26
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 2018-10-01
      • 1970-01-01
      相关资源
      最近更新 更多