Java的WeakHashMap和缓存: 为什么它引用键而不是值?

27 浏览
0 Comments

Java的WeakHashMap和缓存: 为什么它引用键而不是值?

Java的WeakHashMap被认为在缓存方面非常有用。然而,奇怪的是它的弱引用是基于映射的键而不是值来定义的。我的意思是,我想要缓存的是值,并且只有在缓存之外没有其他人强引用它们时,我才希望对它们进行垃圾回收,不是吗?

持有键的弱引用有什么帮助呢?如果你执行ExpensiveObject o = weakHashMap.get("some_key"),那我希望缓存持有'o'直到调用者不再持有强引用,而对于字符串对象"some_key",我一点都不关心。

我是不是漏掉了什么?

0