9得票1回答
WeakHashMap和强引用值

Javadocs称:“当某个键被丢弃时,其条目将从地图中有效地删除”。但是,除非有另一个线程偶尔删除这些Map.Entry 条目,否则值对象不会被地图强烈引用。但由于没有这样的线程在运行,只有通过get方法调用才能逐一删除此类条目。出于这个原因,我几乎总是使用WeakHashMap<K,...

8得票2回答
Java:具有弱引用的堆栈

在Java中有一种称为WeakHashMap的数据结构,它将弱引用作为键来存储。每当弱引用被从内存中移除时,该条目就会从映射中删除。 如果我有一个数据结构,例如Stack或Set,其中我正在存储弱引用,那么当弱引用被从内存中移除时,它们的条目是否会自动删除? 下面是一个存储弱引用的Stac...

7得票3回答
为什么WeakHashMap在GC后保留对值的强引用?

WeakHashMap中的关键对象变成了弱可达状态。在GC后,map应该删除该条目。但是值对象仍然存在强引用。为什么? 使用guava weakkeys map时也会观察到相同的行为。 ... refKey.get = null refValue.get = null 但是我得到输出:...