Java 为什么jvm需要几次gc才能找到weakreference?

Java 为什么jvm需要几次gc才能找到weakreference?,java,garbage-collection,jvm,weak-references,Java,Garbage Collection,Jvm,Weak References,我知道jvm中的GC一旦发现对象是弱引用的,就会收集该对象,但有人说jvm可能需要多次GC才能找到弱引用的对象,我真的不明白,有人能解释一下,或者告诉我这是真的吗?谢谢 是的,需要一段时间才能销毁该对象。我不知道Java WeakReference有什么问题,也不知道它对性能的影响 可能会导致额外的垃圾收集 您无法知道循环何时执行。垃圾收集器在自己的后台线程中循环工作 WeakReferences的管理取决于JRE的实现(就像所有东西一样),另请参见 在Java和其他高级语言(例如C#)中,无法

我知道jvm中的GC一旦发现对象是弱引用的,就会收集该对象,但有人说jvm可能需要多次GC才能找到弱引用的对象,我真的不明白,有人能解释一下,或者告诉我这是真的吗?谢谢

是的,需要一段时间才能销毁该对象。我不知道Java WeakReference有什么问题,也不知道它对性能的影响

  • 可能会导致额外的垃圾收集
  • 您无法知道循环何时执行。垃圾收集器在自己的后台线程中循环工作
  • WeakReferences的管理取决于JRE的实现(就像所有东西一样),另请参见
  • 在Java和其他高级语言(例如C#)中,无法手动销毁对象。垃圾收集器做那个工作。在循环中,在无参考(即强参考)的情况下完成并销毁对象。弱引用不会阻止垃圾收集器收集对象。解释了参考类型之间的区别


    无法触发收集周期。您可以通过
    System.gc()
    戳垃圾收集器,但它不会立即执行并“花费多次时间”。

    所有实际用途的垃圾收集都是不确定的。你根本无法预测它何时会清理某些东西,是否会导致你的应用程序短暂暂停等。大多数时候,它表现良好。您永远不应该依赖底层gc操作或终结器