¿Cómo almacenar en caché con referencias débiles cuando los valores se refieren a las claves?

Estoy usando guavaCache<Key, Value>. CuandoKey&nbsp;no es más accesible, la entrada del caché debe ser recogida de basura (algún día ...). UtilizandoCacheBuilder.weakKeys()&nbsp;haría exactamente eso, si no hubiera una referencia deValue&nbsp;de regresoKey.

Podría hacer esta referencia débil, pero esto podría en cualquier momento hacer que miValue&nbsp;bastante inválido Podría manejarlo, pero preferiría no hacerlo.

Podría usarweakValues(), pero esto podría llevar a desalojos muy tempranos, ya que mis valores solo se mencionan por un corto tiempo.

Tal vez podría usarsoftValues(), peroSoftReferences sonbastante roto.

Probablemente estoy recibiendo algo mal ... ¿Cuál es la solución correcta?

Actualizar

Lo que necesito podría lograrse simplemente poniendo una referencia aValue&nbsp;en cadaKey, pero esto no es posible comoKey&nbsp;no está bajo mi control Si lo fuera, entonces no necesitaría caché, ni referencias débiles, nada.

De esta manera, cada unoKey&nbsp;mantendría su correspondienteValue&nbsp;accesible, que está bien1. Tambien cadaValue&nbsp;mantendría suKey&nbsp;accesible, pero esto no es un problema ya que no hay referencias largas aValue.

1&nbsp;Algún vencimiento sería mejor pero no es necesario.