【问题标题】:are the new objects assigned from eden space or eden + fromSurvivor space?新对象是从 eden 空间还是 eden + fromSurvivor 空间分配的?
【发布时间】:2011-04-17 08:32:24
【问题描述】:

新的对象是从 eden space 还是 eden + fromSurvivor space 分配的? 幸存者空间中的释放空间也可以用于分配给新对象吗?

编辑: 考虑以下场景: 假设伊甸园空间已满,幸存者空间占用较少,那么在这种情况下,如果创建了新对象(新对象足够小以适合幸存者空间),那么次要收集将发生或新对象的空间将从来自幸存者空间?

【问题讨论】:

    标签: java memory-management heap-memory


    【解决方案1】:

    我相信伊甸园空间总是用于小对象,而非常大的对象直接分配在旧空间中。如果在幸存者空间中分配了新对象,那将有点破坏了拥有单独空间的意义。

    更多详情请见this PDF,包括:

    大多数对象都是最初分配的 在伊甸园。 (如前所述,一些大 对象可以直接分配在 老一代。)

    【讨论】:

    • 假设 Eden 空间已满且来自幸存者空间的占用较少,那么在这种情况下,如果创建了新对象(新对象足够小以适合幸存者空间),那么会发生次要收集或新对象的空间将从 fromSurvivor 空间分配?
    • @user275131:我相信会进行一次次要收集。这么说吧:我没有看到任何迹象表明情况并非如此。
    • @Skeet 你不认为如果发生次要收集,那么我们会浪费 fromSurvivor 的空间还是不使用它?
    • @user275131:我怀疑不是,因为它使正常分配更简单,因此很可能更快。这个想法是次要集合非常很快。我可能是错的,但我只是在处理文档。收集器的性能真的很复杂(考虑到多线程分配) - 老实说,我没有资格详细谈论它。如果我正确的,我相信他们考虑直接分配到“从”空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2019-08-06
    相关资源
    最近更新 更多