Uma de Garbage Collection

6 respostas
tads
class Q {

private int id;

public void finalize() {System.out.print(id);}

public Q(int i) {id = i;}

}

class R {

public static void main(String[] args) {

Q q1 = null;

for (int i = 0; i < 10; i++) {

q1 = new Q(i); // 1

}

System.gc();     // 2

}

}

When the processing of line 2 begins how many objects of type Q that were created at line 1 are eligible for garbage collection?

a. 0
b. 1
c. 9
d. 10
e. Indeterminate.
f. Compiler error.
g. Run time error.
h. None of the above.

6 Respostas

ricardolecheta

c. 9

o último ainda fica sendo referenciado pela variável “q1” :smiley:

leonardom

Tbem acho que é 9, resposta c.

cariocathi

Vou de 9 tb… :!:

tads

EEEEhhh!

Esta foi fácil, mas quem não conhece como são instanciados objetos
em java e como o garbage collection trabalha, leva uma buxa!!!

falow

Daniel_Quirino_Olive
Para aqueles que não acreditam nas respostas da galera, ou para aqueles que quiserem ver como funciona na prática o GC, vejam o código modificado:
public class R &#123;
	public static void main&#40;String&#91;&#93; args&#41; &#123;
		Q q1 = null;
		for &#40;int i = 0; i &lt; 10; i++&#41; &#123;
			q1 = new Q&#40;i&#41;; // 1
			System.out.println&#40;&quot;Memoria livre para esta VM&#58; &quot;+Runtime.getRuntime&#40;&#41;.freeMemory&#40;&#41;&#41;;
		&#125;
		System.gc&#40;&#41;; // 2
		System.out.println&#40;&quot;Memoria livre para esta VM&#58; &quot;+Runtime.getRuntime&#40;&#41;.freeMemory&#40;&#41;&#41;;
		q1 = null;
		System.gc&#40;&#41;;
		System.out.println&#40;&quot;Memoria livre para esta VM&#58; &quot;+Runtime.getRuntime&#40;&#41;.freeMemory&#40;&#41;&#41;;
	&#125;
&#125; 

class Q &#123;
	private int id;
	public void finalize&#40;&#41; &#123;System.out.println&#40;&quot;Finalizando... &quot;+id&#41;;&#125;
		public Q&#40;int i&#41; &#123;id = i;&#125;
&#125;
ricardolecheta

legal o exemplo :smiley:

Criado 12 de setembro de 2003
Ultima resposta 12 de set. de 2003
Respostas 6
Participantes 5