Java的WeakHashMap和缓存: 为什么它引用键而不是值?
Java的WeakHashMap被认为在缓存方面非常有用。然而,奇怪的是它的弱引用是基于映射的键而不是值来定义的。我的意思是,我想要缓存的是值,并且只有在缓存之外没有其他人强引用它们时,我才希望对它们进行垃圾回收,不是吗?
持有键的弱引用有什么帮助呢?如果你执行ExpensiveObject o = weakHashMap.get("some_key")
,那我希望缓存持有'o'直到调用者不再持有强引用,而对于字符串对象"some_key",我一点都不关心。
我是不是漏掉了什么?