Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

O que realmente acontece com uma chave "esquecida"?

Na resposta desse exercício é dito que uma chave nova tem o mesmo valor de outra já existente, a antiga é "esquecida"? O que realmente acontece com ela, fica ocupando espaço na memória?

4 respostas

Não, a chave continua sendo a mesma, mas seu valor é substituído pelo novo atribuído. Pode ficar tranquilo que o Garbage Collector não deixa o valor antigo na memória.

Existe alguma boa prática para evitar esse tipo de situação? Ou é melhor deixar com o Garbage Collector mesmo?

solução!

Não vejo aonde isso se aplicaria normalmente, já que a chave é como um unique identifier de seu valor. Você está com um problema assim em sua aplicação? Poderia dar uma contextualizada para que eu possa elaborar uma reposta?

De uma maneira bem simplificada, um check poderia ser realizado antes de realizar o método put em seu map, algo como:

if(!myMap.containsKey(myKey)){
    myMap.put(myKey, myValue);
}

Entrando um pouco mais a fundo sobre "O que realmente acontece com uma chave "esquecida"?"

O map simplesmente exclui a referência para o valor antigo. E como nada mais referencia a este objeto ele é automaticamente elegível para o Garbage Collector.

Obrigado pela resposta, já é o suficiente.