Coletor de Lixo

3 respostas
M

PessoALL, bom dia!

Alguem poderia me explicar o que é este coletor de lixo em java.
Para que serve?
Quando usar?

Por favor se der exemplifique.

Desde já agradeço.

Marcos

3 Respostas

A

É um processo que ocorre automaticamente… você não precisa se preocupar em usar ou não. O gerenciador automático faz uma verificação de tempos em tempos marcando objetos que não estejam sendo mais referenciados no programa. Assim que o programa fica ocioso, estes objetos marcados são destruidos e com isso a memória é liberada.

W

Em Java o programador não precisa desalocar memória, com em C ou C++(outras linguagens). Java tem um coletor de lixo que possui a função de gerenciar memória, otimizando a mesma. O coletor de lixo libera a memória mantida por um objeto se não houver mais nenhuma referência para ele. Ex.:

[color=green]Runtime rt = Runtime.getRuntime();

long mem = rt.freeMemory();

System.out.printn("Memória Livre: " + mem);

// … algum código

System.gc();

// …

mem = rt.freeMemory();
System.out.println("Memória Livre: " + mem);[/color]

O código acima obtém o ambiente de execução com o método estático getRuntime() da classe Runtime. O método freeMemory() retorna a memória disponível no ambiente runtime. A linha System.gc() faz a chamada explícita do coletor de lixo.
Problemas com a utilização de memória podem surgir quando os objetos contém variáveis de instância que são iniciadas no construtor, ocupam um grande quantidade de memória e não são mais utililzadas no restante da aplicação. Isso pode degradar o desempenho de um código.
Mais detalhes, vc pode encontrar em www.jspbrasil.com.br

Wellington Candeia

W

Em Java o programador não precisa desalocar memória, com em C ou C++(outras linguagens). Java tem um coletor de lixo que possui a função de gerenciar memória, otimizando a mesma. O coletor de lixo libera a memória mantida por um objeto se não houver mais nenhuma referência para ele. Ex.:

[color=green]Runtime rt = Runtime.getRuntime();

long mem = rt.freeMemory();

System.out.printn("Memória Livre: " + mem);

// … algum código

System.gc();

// …

mem = rt.freeMemory();
System.out.println("Memória Livre: " + mem);[/color]

O código acima obtém o ambiente de execução com o método estático getRuntime() da classe Runtime. O método freeMemory() retorna a memória disponível no ambiente runtime. A linha System.gc() faz a chamada explícita do coletor de lixo.
Problemas com a utilização de memória podem surgir quando os objetos contém variáveis de instância que são iniciadas no construtor, ocupam um grande quantidade de memória e não são mais utililzadas no restante da aplicação. Isso pode degradar o desempenho de um código.
Mais detalhes, vc pode encontrar em www.jspbrasil.com.br

Wellington Candeia

Criado 16 de abril de 2004
Ultima resposta 16 de abr. de 2004
Respostas 3
Participantes 3