Olá, Ryan!
Você está correto em dizer que o objeto b
da classe Bla
é instanciado 10 vezes. No entanto, a elegibilidade para o Garbage Collector não é determinada pelo número de vezes que um objeto é instanciado, mas sim pelo número de referências a esse objeto que foram perdidas.
No seu código, a cada iteração do loop, uma nova instância de Bla
é criada e a referência a essa instância é atribuída à variável b
. Isso significa que a referência à instância anterior de Bla
é perdida, tornando essa instância anterior elegível para o Garbage Collector.
No final do loop, quando o código chega à linha System.out.println("fim");
, 9 instâncias de Bla
se tornaram inacessíveis (e, portanto, elegíveis para o Garbage Collector) porque suas referências foram perdidas nas iterações anteriores do loop. A 10ª instância de Bla
, no entanto, ainda é acessível através da variável b
, então ela não é elegível para o Garbage Collector neste momento.
Espero que isso esclareça sua dúvida.
Bons estudos!
Sucesso ✨
Um grande abraço e até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!