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

[O ciclo de vida de um objeto] [Exercício 2]

São 10 objetos. O porquê é que é um objeto antes do for e mais nove objetos de dentro do for ? (menos o último do loop for)

4 respostas

Herbert,

class A {
    public static void main(String[] args) {
        B b = new B();
        for(int i = 0;i < 10;i++)
            b = new B();
        System.out.println("Finalizando!");
    }
}

Inicialmente você cria uma instancia na memória do objeto tipo B.

Depois dentro do for você percorre 9 vezes, criando novas instâncias na memória.

As 9 instâncias mais a primeira que você criou totalizam 10 instancias totais

então. Mas repare na resposta que tem lá:

"Somente 10 objetos podem ser garbage coletados pois o último continua referenciado pela variável b."

Parece dar a entender que está contando o primeiro:

B b = new B(); //primeira instância

e mais 10 instâncias. (Só que daí não conta a última)

for(int i = 0;i < 10;i++)
            b = new B();// *mais 10 instâncias*
        System.out.println("Finalizando!");

E de acordo com a resposta, não considera o último pois , (acho) o último não foi sobreescrito. Uma vez que a cada loop do for ele sobreescreve a variável b

E outra. É de 0 a 9. São 10 vezes percorridos, não?

solução!

Herbert

O que rola é que é de 0 a 9 que vai rodar, ou seja, 10 vezes, o que implica 10 instancias mais a inicial, que dá um total de 11.

Como b ainda pode ser usado a ultima fica sendo referenciada, ja as 10 outras podem ser coletadas

sim, era isto que eu tinha entendido..queria confirmar se era.