Coletor de lixo (GC)

2 respostas
R

Estou com uma dúvida com o seguinte código abaixo não sei como saber quantos objetos podem ser “recolhidos” pelo coletor de lixo a questão é a seguinte

public class Garb{
           Garb g;
           public Garb(Object g){
                this.g=(Garb)g;
           }
           public static void main(String args[]){
                Garb gb1=new Garb(new Garb(new Garb(null)));
                gb1.g.g=new Garb(new Garb(null));
               Garb gb2=new Garb(new Garb(new Garb(gb1)));
               gb2.g=gb1.g;
               System.gc();
          }
      }

A - 0
B - 1
C - 2
D - 3
E - 4
F - 5
G - 6
H - Mais de 6

Fazendo esse exercício me surgiu a dúvida de como criar um diagrama para identificar os objetos que serão recolhidos pelo coletor de lixo. A resposta para a questão é D, mas eu não sei o porque nem consigo visualizar isso desde já obrigado pela ajuda.

2 Respostas

rmendes08

A melhor maneira de resolver esse tipo de questão é fazer um desenho da stack e da heap, respectivamente. A cada linha do método você coloca no seu diagrama as referências na stack e os objetos criados no heap, claro, apontando as referências entre eles. A cada linha você desenha as referências criadas e as referências desmanchadas. Ao final, a partir de cada referência no stack você segue as referências marcando os objetos percorridos. Quem ficar sem marcação será coletado pelo GC.

R

Valeu já me deu uma luz ai para da uma estudada nessa parte.

Criado 21 de junho de 2012
Ultima resposta 22 de jun. de 2012
Respostas 2
Participantes 2