【问题标题】:JVM GC and unused referencesJVM GC 和未使用的引用
【发布时间】:2018-11-12 13:16:01
【问题描述】:

假设Java程序中有以下四个对象:

  • 主要
  • 一个
  • b
  • c

依赖如下:

ma​​in ==> a ==> b ==> c

换句话说,ma​​in 使用 aa 使用 bb > 使用 c

现在,对象 a 的值从对 b 的引用变为 null。这意味着没有对 b 的活动引用,使其可用于垃圾回收:

ma​​in ==> a =/=> b ==> c

现在会发生什么:

A) 通俗地说,b 可以随时被垃圾回收。我的假设c 只有在 b 被垃圾回收后才符合垃圾回收条件。

B) 但是,我想这可能是 JVM 可以以某种方式区分对 GC 合格对象和非 GC 合格对象的 c 引用,并因此标记 c 与 b 同时符合条件。

行为是由 Java 语言规范或任何 JVM 相关规范决定的吗?还是留给 JVM 实现来决定?

【问题讨论】:

标签: java garbage-collection jvm


【解决方案1】:

感谢这个链接,我相信选项 B 是正确的: https://www.dynatrace.com/resources/ebooks/javabook/how-garbage-collection-works/ 一旦 bc 不再可以从 GC 根访问,它们就可以同时被收集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多