1
resposta

[Dúvida] [Dúvida] Alocação de memória

O que acontece com a memória alocada para 2°Conta quando ele muda a referência da mesma? Ela é extinta pelo garbage colletor ou algo do tipo?

1 resposta

Oi João Pedro, tudo bem?

Na verdade, a segunda conta apontava inicialmente para o mesmo objeto que a primeira, certo? Então nenhuma memória extra foi utilizada quando fizemos Conta segundaConta = primeiraConta;, pois tivemos uma nova variável, mas nenhum novo objeto. Logo, nenhuma memória foi alocada para a segunda conta. Já ao fazermos Conta segunda = new Conta();, aí sim precisamos de alocar uma memória para um novo objeto, mas o Garbage Collector não precisou de ser utilizado, pois em momento nenhum essa segunda conta ficou inativa.

O Garbage Collector entraria em ação se tivéssemos um código assim:

    Conta primeira = new Conta();
    Conta segunda = new Conta();
    segunda = primeira;

Repare que nesse código, criamos dois objetos. Porém, ao fazermos a variável segunda apontar para a primeira (que se refere ao primeiro objeto que criamos), estamos "excluindo" o segundo objeto que foi criado, deixando-o sem utilidade. Quando o Garbage Collector percebe que esse objeto está inativo, e que nenhuma referência está apontando para ele, aí sim ele tira esse objeto da memória.

Esse tópico de referências e objetos costuma ser mais complicado mesmo, se tiver mais alguma dúvida, fique à vontade para falar por aqui!

Espero ter ajudado, abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software