Java WeakHashMap часто цитируется как полезный для кэширования. Кажется странным, хотя его слабые ссылки определяются с точки зрения ключей карты, а не ее значений. Я имею в виду, это значения, которые я хочу кэшировать, и которые я хочу получить мусор, собранный один раз, кроме того, что кеш сильно ссылается на них, нет?
В каком смысле это помогает удерживать слабые ссылки на ключи? Если вы выполняете ExpensiveObject o = weakHashMap.get("some_key")
, то я хочу, чтобы кеш сохранялся до 'o', пока вызывающий объект больше не удерживает сильную ссылку, и мне все равно, о строковом объекте "some_key".
Я что-то пропустил?