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

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

Podría hacer esta referencia débil, pero esto podría en cualquier momento hacer que miValue 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 en cadaKey, pero esto no es posible comoKey no está bajo mi control Si lo fuera, entonces no necesitaría caché, ni referencias débiles, nada.

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

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

Respuestas a la pregunta(4)

Su respuesta a la pregunta