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)
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)
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?
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.