gpt4 book ai didi

java - Tenured 已满,Eden 为空 : can objects be moved to Eden?

转载 作者:行者123 更新时间:2023-12-02 10:53:40 24 4
gpt4 key购买 nike

我试图了解 Java 中的 GC 是如何工作的,我想知道在以下情况下会发生什么:

  1. Eden:几乎已满,Surivor1:利用率极低,Surivor2:空,Tenured:几乎已满。

  2. 我们尝试分配一些对象,但该对象不适合 Eden 中的可用空间。

  3. GC 开始:尝试将 Eden+Survivor1 重新打包到 Survivor2 中。大多数对象已删除,但空间仍然不足。溢出试图获得终身教职。

  4. Tenured 也没有足够的空间来保留所有溢出。

此时,在删除死对象后,Eden 可能已经拥有足够的空间。 Java GC 可以利用这个空闲空间吗?

在这个问题中我没有考虑 G1 垃圾收集器。

最佳答案

在您描述的情况下,典型的 GC 算法(因为您没有询问特定的算法)会导致主要 GC 尝试回收旧代(终身空间)中的空间,以允许从旧代中提升对象伊甸园/幸存者空间。

如果这无法回收足够的空间来支持年轻代 GC 的完成,您将得到 OutOfMemoryException。

关于java - Tenured 已满,Eden 为空 : can objects be moved to Eden?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51964794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com