Ae… Eu li alguns livros para essa prova e seguinte: tem alguns q tem altas coisas sbre garbage collector tipo agoritmo mark sweeper phantom e weak references etc…
Eu to sabendo o q eh, mas queria saber de vcs se alguem jha viu alguma questao sobre o assunto…
Duvida de u h: Sobre Garbage Collector no exame
10 Respostas
Não cai na prova sobre os algoritmos usados, pois eles não estão especificados pelo Java (ou seja, cada JVM faz do jeito que preferir).
O tipo de questão que cai sobre garbage collector é darem um código e perguntarem quantos objetos estão aptos a serem coletados, ou a partir de qual linha do código o objeto x poderia ser coletado, e nesses caso você precisa entender sobre as referências
Sobre os tipos de referencias ( phanton, weak, strong ) nao cai, pois isso eh um topico bem mais avancado ja.
Porem, cai questoes que perguntam quando ( e SE ) um objeto vai poder ser coletado, ou quantas referencias existem para tal objeto.
Em relacao a perguntas de qual algoritmo eh usado, a resposta mais comum eh “nap eh possivel saber”, pois cada VM pode implementar da maneira que achar melhor.
Rafael
Opa,
Vcs poderiam dar um exemplo de uma questão deste tipo ?
Obrigado
After what line will the object referenced by i become eligible for garbage collection in the following code?
public class Pannel{
public static void main(String argv[]){
Pannel p = new Pannel();
p.go();
}
public void go(){
Integer i = new Integer(10);
Integer i2 = i;
i = null;
Integer i3 = new Integer(0);
i2= null;
}
}
- i = null;
- Integer i3 = new Integer(0);
- i2= null;
- It will not become eligable for garbage collection during the run of this program
Obrigado pelo exemplo.
Não estudei muito Garbage ainda, mas acredito que a resposta seja o item 3. Pois após i2 = null o método termina, aí acho que o Garbage entra em ação p/ limpar as variáveis que foram alocadas no método.
Se estiver errado peço que me corrijam ok ?
valeu !!!
parabéns, você acertou 
:? tome cuidado ao afirmar que o gc entra em ação quando o método termina, primeiro porque é impossível afirmar com certeza que isso vai ocorrer, segundo, porque podem haver ainda referências para o objeto mesmo quando o método termina, por exemplo, se o retorno do método for uma referência para o objeto.
entrando na conversa … pelo que eu entendi a resposta seria mesmo a opção 3 mas a explicação deveria ser
"i2 referencia o mesmo local que i, por isso, mesmo i sendo setado para null sua área de memória só poderá ser liberada pelo gc após o objeto i2 ser destruido" … não é isso?
Caso não existisse a linha Integer i2 = i; então a resposta seria a opção 1, o objeto é marcado para ser coletado pelo GC quando
o bloco que instanciou o objeto termina (uma loop, if, ou o método propriamente) ou a referência do objeto é destruida (objeto=null) …
é por ai?
[]s
é isso 
Disse tudo…é exatamente isso! Mesmo que o método acabe, pode ser que ainda exista alguma referência ao objeto criado! Fora isso…existem diversos algoritmos de gc e não podemos prever qual deles foi implementado e em que momento o gc é executado!
[]'s Tjmm.