【发布时间】:2012-05-22 11:15:52
【问题描述】:
我知道在 Java 中我们有软引用的概念。如果:
1) 有一个软引用“sf”引用了一个对象A
2) 在对象A中,有强引用指向对象B
3) 对象 A 和 B 未在其他任何地方引用。
根据定义,对象 A 和对象 B 都是“可轻松访问的”,对吧?
那么说我们现在内存用完了,GC就开始了。有没有可能GC会回收对象B而不回收对象A?
如果是这样的话,以后如果我们想通过“sf”访问对象B,它将为null。 java如何避免这种情况发生?
我在 java doc 中没有看到任何解释。
【问题讨论】:
-
我会假设 GC 要么收集 A 和 B,要么不收集它们,因为这符合逻辑,但这只是推测。
标签: java garbage-collection soft-references