今天我發現this blog post,它討論了在緩存上使用WeakHashMap
的用法。它被一個事實所吸引,即不是值,而是鍵被存儲爲弱引用,並且當引用不再活動時,整個鍵 - 值對將從WeakHashMap中移除。因此,這將導致以下情況發生:WeakHashMap - 它的目的是什麼以及它應該如何正確使用
WeakHashMap map = new WeakHashMap();
SomeClass myReference1 = ....
map.put(new Long(10), myReference1);
// do some stuff, but keep the myReference1 variable around!
SomeClass myReference2 = map.get(new Long(10)); // query the cache
if (myReference2 == null) {
// this is likely to happen because the reference to the first new Long(10) object
// might have been garbage-collected at this point
}
我很好奇,什麼場景,然後將採取WeakHashMap
類的優勢在哪裏?
自動裝箱,你沒有顯式調用'新龍(10)'。這就足夠了:'map.get(10L);' –
可能重複[你什麼時候使用WeakHashMap或WeakReference?](http://stackoverflow.com/questions/154724/when-would-you-use- a-weakhashmap-or-a-weakreference) –
@Matt Ball,這不是重複的,因爲問題是爲WeakHashMap獲取一些用例,而不是將它與其他構造進行比較。 –