Como armazenar em cache com referências fracas quando os valores se referem a chaves?
Estou usando goiabaCache<Key, Value>
. Sempre queKey
não é mais atingível, a entrada do cache deve ser coletada como lixo (algum dia ...). UsandoCacheBuilder.weakKeys()
faria exatamente isso, se não houvesse uma referência deValue
de volta aKey
.
Eu poderia fazer esta referência fraca, mas isso poderia a qualquer momento fazer a minhaValue
completamente inválido. Eu poderia lidar com isso, mas eu prefiro não.
eu poderia usarweakValues()
, mas isso poderia levar a despejos muito cedo, como meus valores são referenciados por um curto período de tempo.
Talvez eu possa usarsoftValues()
, masSoftReference
s sãobastante quebrado.
Provavelmente estou recebendo algo errado ... qual é a solução correta?
AtualizarO que eu preciso poderia ser alcançado simplesmente colocando uma referênciaValue
em cadaKey
, mas isso não é possível comoKey
não está sob meu controle. Se fosse, então eu não precisaria de cache, sem referências fracas, nada.
Desta forma, cadaKey
manteria seu correspondenteValue
acessível, o que é bom1. Além disso, cadaValue
manteria suaKey
alcançável, mas isso não é problema, já que não existem referências aValue
.
1 Alguma expiração seria melhor, mas não é necessária.