How many objects will be eligible for garbage collectionafter the executionof line 9 int the following code?
public class GCTest {
public static void main(String args[]) {
Double x = new Double(0);
for(int i = 0; i < 5; i++)
for(int j = 0; j < 3; j++ )
x = new Double(i + j);
int a = x.intValue(); //linha 9
System.out.println("a = " + a);
}
}
Select 1 option:
[A] 8
[B] 14
[C] 15
[D] 16
alguem pode me ajudar a enchergar porque a resposta é 15 ?
Double x = new Double(0);
for(int i = 0; i < 5; i++)
for(int j = 0; j < 3; j++ )
x = new Double(i + j);
int a = x.intValue();
System.out.println("a = " + a);
}
}
Boa questão.
X foi iniciado, então 1 objeto. O primeiro loop roda 5 vezes, porém a cada vez faz 3 volta, o que dá 15 voltas.
Sendo x = new Double(…) teremos 15 objetos criados, porém ele é sobrescrito a cada volta do segundo loop, sendo assim dá 16 vezes. Só que na primeira execução, onde x = new Double(0), ele é sobrescrito pela primeira volta do loop. E ao final da execução o último dos objetos está ainda referenciado em x, ou seja, 15 objetos de presente pro GC.
[quote=otavio]Double x = new Double(0);
for(int i = 0; i < 5; i++)
for(int j = 0; j < 3; j++ )
x = new Double(i + j);
int a = x.intValue();
System.out.println("a = " + a);
}
}
Boa questão.
X foi iniciado, então 1 objeto. O primeiro loop roda 5 vezes, porém a cada vez faz 3 volta, o que dá 15 voltas.
Sendo x = new Double(…) teremos 15 objetos criados, porém ele é sobrescrito a cada volta do segundo loop, sendo assim dá 16 vezes. Só que na primeira execução, onde x = new Double(0), ele é sobrescrito pela primeira volta do loop. E ao final da execução o último dos objetos está ainda referenciado em x, ou seja, 15 objetos de presente pro GC.[/quote]
Obrigado Otavio, mais claro que isso impossivel ^^