【发布时间】:2016-12-05 02:30:54
【问题描述】:
我有一个关于 Java 中的弱引用和强引用的非常基本的问题。
在一般 Java 编程中,我们通常不会创建对象的弱引用,我们会创建普通的强引用,但是当我们处理完该对象后,我们将 null 分配给该对象,其概念是,该对象将在下次被 GC 收集.
是不是我的理解有误?
看了一些文章后,看起来,对象被GC收集如果它是空的,或者只要它有弱引用,就没有在任何地方引用。我很困惑。
换句话说,就 Java GC 而言,这两个代码 sn-ps 有什么区别?
片段 1
Counter counter = new Counter(); // strong reference - line 1
WeakReference<Counter> weakCounter = new WeakReference<Counter> (counter); //weak reference
counter = null;
片段 2
Counter counter = new Counter(); // strong reference - line 1
counter = null;
【问题讨论】:
-
您要查找的词是reference。
-
您可能会在阅读我发布到另一个问题的答案时获得一些帮助。如果没有对它的强引用或软引用,WeakReference 的强度不足以强制对象在垃圾回收周期中存活。 stackoverflow.com/a/51891259/504133
标签: java collections garbage-collection weak-references