SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
®       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
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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. }
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
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.
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. }
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
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. }
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. }
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. }
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.

Mais conteúdo relacionado

Último

SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
NarlaAquino
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
edelon1
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
rosenilrucks
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
LeloIurk1
 

Último (20)

PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escrita
 
praticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiopraticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médio
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 

Destaque

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
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.