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

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

15得票4回答
一个弱哈希映射如何知道需要进行垃圾回收?

我最近了解到Java中的 WeakHashMap 数据结构。 然而,我不理解当它不再被常规使用时,它如何通过垃圾回收来清除映射。这个数据结构如何知道我在程序中不再使用键?如果我很长时间没有引用一个键会怎样呢?

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

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

9得票1回答
如何在Java中有效地使用String作为WeakHashMap的键,或者使用替代解决方案

我正在管理一个Java项目,用于存储用户数据。用户可以在线或离线。当用户在线时,他们的数据会加载到数据对象中以便于访问,并在注销时卸载。 然而,为了防止多个命令同时操作数据而导致数据损失,对于离线用户,我使用WeakHashMap作为已加载用户数据对象的缓存。如果需要访问离线数据对象进行修改...

59得票7回答
是否有java.util.concurrent中WeakHashMap的等效替代品?

以下代码片段是否可以被重写,而不使用Collections.synchronizedMap()方法,同时在并发时保持正确性?Collections.synchronizedMap(new WeakHashMap<Class, Object>()); 即,是否有java.util.c...

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

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

13得票6回答
WeakHashMap与HashMap的区别

在以下代码示例中,当键设置为null并调用System.gc()时,WeakHashMap将失去所有映射并被清空。class WeakHashMapExample { public static void main(String[] args) { Key k1 = new Key...

29得票1回答
WeakHashMap的等价物是什么?

HashSet<WeakReference<T>>是WeakHashMap<T>的Set等效物吗?也就是说,当它们不再被引用时,条目是否会被自动删除? 如果不是,那么该如何实现相同的功能?

22得票6回答
WeakHashMap示例

我创建了一个 WeakHashMap,代码如下:WeakHashMap<Employee,String> map = new WeakHashMap<Employee,String>(); map.put(emp,"hello"); 如果emp是一个Employee对象...

9得票4回答
Java弱引用哈希映射 - 需要基于值的弱性而非键来删除条目。

因此,Java中的WeakHashMap允许创建一个映射,如果其键变得弱,则删除其条目。但是,我如何创建一个Map,当地图中的值变得弱时将其条目删除?我希望使用映射作为全局哈希表,根据它们的ID跟踪对象。 ID ---> Object Address Key ---> Val...