Сегодня я нашел это сообщение в блоге , в котором обсуждались случаи использования 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
?