java - 生存期已满,Tenured Generation GC 是否运行?

标签 java garbage-collection

我试图了解 Java GC 的工作原理。假设由于分配请求,Eden 空间已满。发生 Minor GC,将所有 Eden 和 Survival1 对象收集到 Survival2 中。但在《生存2》中,物体比空间还多。据我了解,当这种情况发生时,溢出会被转移到 Tenured 空间(过早地? - 在对象应该保留在 Young 空间中的预定义 GC 迭代次数之前)。如果 Tenured 空间有足够的空间用于溢出,这样的事件是否也会触发 Tenured 空间的 GC?

我在这里不考虑 G1 垃圾收集。

最佳答案

您对幸存者空间如何工作的假设是正确的。如果“to”幸存者空间没有足够的空间来容纳从“from”空间复制的对象以及从 Eden 收集的对象,则对象将过早地提升(在达到保有阈值之前)到老年代。

老一代。是独立的,因此只有当对象从 Young gen 升级时才会触发 GC。造成它。对于 CMS 和 G1 等算法,它们使用占用率等值来决定何时启动 GC。老一代的GC。如果仍有足够的促销空间,可能会触发,但不确定。

关于java - 生存期已满,Tenured Generation GC 是否运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51954188/

相关文章:

java - 无法解析 MY_PERMISSION_ACCESS_COURSE_LOCATION

java - 与@BeforeClass 等效的 TestNG 监听器,可以访问上下文

java - Spark Streaming gc 设置问题

javascript - 使用适当的 GC 删除 DOM 节点(无泄漏)

java - 当我在 jvisualvm 中转储堆时,如何删除对 Runnable 的 “Java Frame” GC Root 引用?

android - 垃圾收集器可以释放单例实例吗? (以及为什么或如何避免)

java - 在 AS3 中的本地主机上无法接收来自套接字服务器的响应

java - 如何使用带有滚动页面的卡片 View 和 slider ?

java - 在 viewpager 中显示特定 fragment 的键盘

c - Kotlin/Native 垃圾收集器如何在 C 中工作?