Как кэшировать со слабыми ссылками, когда значения ссылаются на ключи?

Я использую гуавуCache<Key, Value>, Всякий раз, когдаKey более не достижимо, запись в кеш должна собираться (когда-нибудь ...). С помощьюCacheBuilder.weakKeys() будет делать именно это, если бы не было ссылки отValue вернуться кKey.

Я мог бы сделать эту ссылку слабой, но это может в любое время сделать мойValue совершенно неверно. Я мог бы справиться с этим, но я предпочел бы не делать этого.

Я мог бы использоватьweakValues(), но это может привести к очень раннему выселению, поскольку на мои ценности ссылаются только на короткое время.

Может быть, я мог бы использоватьsoftValues(), ноSoftReferenceссовсем сломан.

Возможно, я что-то неправильно понимаю ... Каково правильное решение?

Update

То, что мне нужно, может быть достигнуто просто путем ссылки наValue в каждыйKey, но это невозможно, так какKey не под моим контролем. Если бы это было так, то мне не нужен ни кэш, ни слабые ссылки, ни ничего.

Таким образом, каждыйKey будет держать его соответствующимValue достижимо, что хорошо1, Также каждыйValue будет держать егоKey достижимо, но это не проблема, так как нет давно существующих ссылок наValue.

1 Некоторое истечение было бы лучше, но это не обязательно.

Ответы на вопрос(4)

Ваш ответ на вопрос