Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
SCJP 6 - Garbage Collector
1. ® TM
Certificação Sun para Programador Java 6
Garbage Collector
Tomaz Lavieri
Sun Certified Java Programmer 6
tomazlavieri@gmail.com
http://java-i9se.blogspot.com.br
2. Garbage Collector
1. class A {
2. static int count = 0;
3. A intern;
4. public A(A a) {
5. intern=a;
6. }
7. protected void finalize() { ++count; }
8. public static void main(String args[]) {
9. A a1=null;
10. A a2=new A(new A(null));
11. A a3=new A(a2);
12. a1=a3;
13. a1.intern=new A(null);
14. a2.intern=null;
15. System.gc();
16. System.out.print(count);
17. }
18. }
3. Garbage Collector
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
4. Compila ?
Garbage Collector
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
7. protected void finalize() { ++count; } Lixo.
I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
11. A a3=new A(a2); elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
5. Como é possível verificar, o
código não contém nenhum erro, e
Garbage Collector será compilado normalmente,
portanto a letra “A” é falsa.
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
7. protected void finalize() { ++count; } Lixo.
I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
11. A a3=new A(a2); elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
6. Garbage Collector
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
7. O que será impresso ?
Garbage Collector
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
7. protected void finalize() { ++count; } Lixo.
I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
11. A a3=new A(a2); elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
8. Garbage Collector As alternativas de “B” a “G”, querem
saber o que será impresso. Porém
• Quais afirmativas são corretas ? como não é possível ter certeza se o
coletor de A) O código não compila invocado
lixo foi realmente
1. class A { (linha 15), B) O resultado imprimirá 0 se o
não se pode ter certeza
2. static int count = 0; C) O resultado imprimirá 1
método finalize() (linha 7) será
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) {
invocado, pelos objetos elegíveis para
F) O resultado imprimirá 4
5. intern=a; Coleta de Lixo, desta forma, o que será a
G) Não é possível prever apenas
6. } letra “G” é impresso.15 invocará o Coletor de
verdadeira, não sendo
H) A linha
7. possível determinar o que será
protected void finalize() { ++count; } Lixo.
G) Após a linha 9 existe 1 objeto
8. impresso. elegível para o GC
public static void main(String args[]) {
9. A a1=null; H) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); Obs.: Após Após a linha 13 existem 2 objetos
I) a analise de quantos
11. A a3=new A(a2); elegíveis para o GC
objetos estarão a linha 14 existe 1 objeto linha
J) Após elegíveis após a
12. a1=a3;
13. a1.intern=new A(null);
14, caso oelegível para sejaexistem 2 objetos
número o GC 0 (zero) é
K) Após a linha 14
14. a2.intern=null; preciso marcar apara o como falsa e
elegíveis “G” GC
L) Após a linha 14 existem 3 objetos
15. System.gc(); marcar a “B” como verdadeira, pois,
elegíveis para o GC
16. System.out.print(count); nestas condições,linha 15 todos os objetos
M) Após a
serão coletados pelo GC ter certeza
pode-se
17. } que finalize não apara o15 apenas coletados.
N) Após será invocado.
Elegíveis
linha
GC serão
os objetos
18. }
9. Ao final, verificaremos
se há Objetos elegíveis para
Garbage Collector confirmar esse resultado
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
10. O Coletor de lixo será
Garbage Collector invocado ?
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor
7. protected void finalize() { ++count; } de Lixo.
I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
11. A a3=new A(a2); elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
11. Como acabamos de verificar, não é
possível ter certeza se a linha 15
Garbage Collector invocará o coletor de lixo, sendo assim,
não se pode garantir as afirmativas das
• Quais afirmativas são corretas ? alternativas “H”,”O” ou “P” sendo,
portanto, todas falsas.
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor
7. protected void finalize() { ++count; } de Lixo.
I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
11. A a3=new A(a2); elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
12. Garbage Collector
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
13. Como saber se um objeto
Garbage Collector Esta elegível para o GC ?
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; }
I) Após a linha 9 existe 1 objeto
8. public static void main(String args[]) { elegível para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto
11. A a3=new A(a2); esta elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) na linha 15 todos os objetos serão
16. System.out.print(count); coletados pelo GC
17. } P) na linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
14. A melhor forma é separar de um lado a
lista das variáveis, e de outro a lista de
Garbage Collector objetos, e das referencia deles
(indicado pela linha 5), e ir
• Quais afirmativas são corretas ? preenchendo linha a linha, para
verificar o andamentonão compila
A) O código
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
15. A melhor forma é separar de um lado a
lista das variáveis, e de outro a lista de
Garbage Collector objetos, e das referencia deles
(indicado pela linha 5), e ir
• Quais afirmativas são corretas ? preenchendo linha a linha, para
verificar o andamentonão compila
A) O código
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
7.
Para{ resolver a questão,Lixo.
protected void finalize() ++count; }
mais
8. facilmente chamaremos I) ApósGC 9 existe 1 objeto elegível
public static void main(String args[]) { o membro
para o
a linha
9. A a1=null; do objeto sempre de “x”, J) Após a linha 13 existe 1 objeto
ignorando
elegível para o GC
10. o nome “intern”
A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
16. Linha 9
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; }
I) Após a linha 9 existe 1 objeto
8. public static void main(String args[]) { elegível para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
11. A a3=new A(a2); elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
17. Linha 9
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; }
I) Após a linha 9 existe 1 objeto
8. public static void main(String args[]) { elegível para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
Nenhum objeto foi criado ate a linha 9,
elegível para o GC
10. A a2=new A(new A(null));
11. A a3=new A(a2); sendo assim a letra a“I” sóGC
K) Após linha 13 existem 2 objetos
elegíveis para o pode ser
12. a1=a3; falsa, e não existe nenhum objeto
L) Após a linha 14 existe 1 objeto
elegível para o GC
13. a1.intern=new A(null); elegível nestaM) Após a linha 14 existem 2 objetos
linha.
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
18. Linha 9
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto
8. public static void main(String args[]) { elegível para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
19. Linha 10
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj1.x = obj2
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
20. Linha 10
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj1.x = obj2
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { apesar F) O nenhumaprever4o que será
de resultado imprimirá
variável
5. intern=a; G) Não é possível
na pilha apontar para obj2
impresso.
6. }
obj1.x H) A linhaportanto o Coletor de
o faz, 15 invocará este
Lixo.
7. protected void finalize() { ++count; }
public static void main(String args[]) { Não épara o GC para o GC
I)elegível 9 existe 1 objeto elegível
Após a linha
8.
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
21. Linha 11
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj1.x = obj2
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
22. Linha 11
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj1.x = obj2
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Nãoobj3.x éprever o que será
é possível igual a a2,
impresso.
6. } H)e neste invocará o Coletor de
A linha 15 Momento, o valor
Lixo. de a2 é obj1
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
23. Linha 12
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj3 obj1.x = obj2
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
24. Linha 13
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj3 obj1.x = obj2
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado obj4
2. static int count = 0; obj4.x = null imprimirá 1
C) O resultado
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1
objeto elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto
11. A a3=new A(a2); esta elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } a1 se refere a obj3 P) Após a linha 15 apenas os objetos
portanto o novo obj4 será Elegíveis para o GC serão coletados.
18. }
passado a obj3.x
25. Linha 13
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj3 obj1.x = obj2
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado obj4
2. static int count = 0; obj4.x = null imprimirá 1
C) O resultado
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1
objeto elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto
11. A a3=new A(a2); esta elegível para o GC
L) Após a linha 14 existe 1 objeto
12. a1=a3; *a1 aponta paraoobj3, que aponta
elegível para GC
13. a1.intern=new A(null); para obj4, quelinha 14 existem 2 objetos
M) Após a
aponta para null.
elegíveis para o GC
14. a2.intern=null;
*a2 aponta para obj1, que objetos
N) Após a linha 14 existem 3 aponta
15. System.gc(); elegíveis para o GC
16. System.out.print(count);
para obj2, quelinha 15 todos os objetos
O) Após a aponta para null.
serão coletados pelo GC
17. } a1 se refere a obj3 P) Após a linha 15 apenas os objetos
18. } portanto o novo obj4 será Portanto “J” épara o GC serão coletados.
Elegíveis falso e “K” é
passado a obj3.x verdadeiro.
26. Linha 13
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj3 obj1.x = obj2
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado obj4
2. static int count = 0; obj4.x = null imprimirá 1
C) O resultado
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto
esta elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
27. Linha 14
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj3 obj1.x = obj2 null
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado obj4
2. static int count = 0; obj4.x = null imprimirá 1
C) O resultado
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1
12. a1=a3; objeto elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
a2 se refere a obj1 Elegíveis para o GC serão coletados.
18. }
portanto obj1.x passara a
referenciar null
28. Linha 14
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj3 obj1.x = obj2 null
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado obj4
2. static int count = 0; obj4.x = null imprimirá 1
C) O resultado
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
*a1,a3 apontam para obj3, que G) Não é possível prever o que será
5. intern=a; impresso.
6. aponta para obj4, que aponta null.
} H) A linha 15 invocará o Coletor de
7. *a2 aponta para obj1, que aponta
protected void finalize() { ++count; } Lixo.
I) Após a linha 9 existe 1 objeto elegível
8. para null. void main(String args[]) {
public static para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. E portanto ninguemA(null)); para
A a2=new A(new aponta K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. obj2, a3=new A(a2); elegível para o
A que é o único
L) Após a linha 14 existe 1
12. GCa1=a3; objeto elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
29. Linha 14
Variáveis Objetos
Garbage Collector
---------------------------- ------------------------------
a1 = null obj3 obj1.x = obj2 null
• Quais afirmativas são corretas ?
a2 = obj1 obj2.x = null
A) O código não compila
1. class A { a3 = obj3 obj3.x = obj1 imprimirá 0
B) O resultado obj4
2. static int count = 0; obj4.x = null imprimirá 1
C) O resultado
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
*a1,a3 apontam para obj3, que G) Não é possível prever o que será
5. intern=a; impresso.
6. aponta para obj4, que aponta null.
} H) A linha 15 invocará o Coletor de
7. *a2 aponta para obj1, que aponta
protected void finalize() { ++count; } Lixo.
I) Após a linha 9 existe 1 objeto elegível
8. para null. void main(String args[]) {
public static para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. E portanto ninguemA(null)); para
A a2=new A(new aponta K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. obj2, a3=new A(a2); elegível para o
A que é o único
L) Após a linha 14 existe 1 objeto
12. GCa1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
30. Lembrando a observação feita sobre o finalize(),
como existe um objeto elegível para o GC, não é
Garbage Collector possível determinar, na linha 15, se o Coletor foi
realmente invocado. E portanto saber se o contador
esta em 0 (zero) ou em 1 (um), portanto “B” é
• Quais afirmativas são corretas ?
realmente falso e “G” é verdadeiro. compila
A) O código não
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
31. Garbage Collector
• Quais afirmativas são corretas ?
A) O código não compila
1. class A { B) O resultado imprimirá 0
2. static int count = 0; C) O resultado imprimirá 1
D) O resultado imprimirá 2
3. A intern; E) O resultado imprimirá 3
4. public A(A a) { F) O resultado imprimirá 4
5. intern=a; G) Não é possível prever o que será
impresso.
6. } H) A linha 15 invocará o Coletor de
Lixo.
7. protected void finalize() { ++count; } I) Após a linha 9 existe 1 objeto elegível
8. public static void main(String args[]) { para o GC
9. A a1=null; J) Após a linha 13 existe 1 objeto
elegível para o GC
10. A a2=new A(new A(null)); K) Após a linha 13 nenhum objeto esta
elegível para o GC
11. A a3=new A(a2);
L) Após a linha 14 existe 1 objeto
12. a1=a3; elegível para o GC
13. a1.intern=new A(null); M) Após a linha 14 existem 2 objetos
elegíveis para o GC
14. a2.intern=null; N) Após a linha 14 existem 3 objetos
15. System.gc(); elegíveis para o GC
O) Após a linha 15 todos os objetos
16. System.out.print(count); serão coletados pelo GC
17. } P) Após a linha 15 apenas os objetos
Elegíveis para o GC serão coletados.
18. }
A resposta do exercicio é “G”, “K” e “L” são verdadeiras.