

Autor(a)
peas
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.

Autor(a)
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
Um post bem curto sobre uma prática que aparece comumente em códigos por aí: ```java
public void metodoQueListaUsuarios() { List
Essa atribuição da `lista` para `null`, como muitos de vocês sabem, é totalmente desnecessária, pois ao fim do método o escopo da variável `lista` termina e ela morre automaticamente, já que essa é uma variável de pilha. Achar que isto está ajudando o Garbage Collector é um engano.
Porém tem alguns casos que isto é aplicável. O primeiro é se fosse um atributo, e não uma variável ao método. Mas se você está atribuindo a um atributo fim de todo método, ele tem grande potencial de ser refatorado para varíaveis locais.
O segundo caso é quando você tem um objeto alocado heap e não vai usá-lo mais, porém você ainda tem trabalho a fazer escopo da variável que referencia . O Garbage Collector não poderá coletar , nem mesmo marca-lo para coleta, enquanto a sua referência existir, e pode ser que ela existindo por muito tempo, como código abaixo:
Neste caso faz sentido tentar liberar a variável o mais rápido possível. Caso contrário, durante a nossa dao.fazOperacaoDemorada(), o objeto estará presente na memória e não poderá ser coletado (as vezes, em vez de atribuir null, podemos obter o mesmo efeito criando um novo escopo com {}). Claro que essa atribuição merece ser documentada. Essa operacaoDemorada poderia ser mais grave ainda caso a thread vá ser colocada em wait.
Dizem também, mas aí já está além do meu conhecimento, que a virtual machine hoje em dia consegue detectar essas variáveis que não tem mais uso em um determinado escopo, eliminando-a antes mesmo que o seu escopo feche.
Avalie este artigo