Coletor de lixo codigo

5 respostas
LPJava
import java.util.Date;
class Check{
	public static void main(String [] args){
		Runtime rt = Runtime.getRuntime();
		System.out.println("total JVM memory " + rt.totalMemory());
		System.out.println("LIVRE JVM memory " + rt.freeMemory());
		Date d = null;
		for(int i=0;i<10000;i++){
			d = new Date();
			d = null;
		}
		System.out.println("depois de after memory = " + rt.freeMemory());//depois 
		rt.gc();
		System.out.println("depois after gc = " + rt.freeMemory());
	}
}

ae pessoal nao entendi muito o resultado apos o for desse codigo… eh da kathy cap3… coletor de lixo… quem puder me ajudar agradeço!!

5 Respostas

danilomunoz

O que q vc não entendeu?

Especifique melhor…

tipo … vc entendeu que mesmo que você chame system.gc(), pode ser que o garbage não entre em ação? Que não dá para prever quando ele irá rodar.

No caso do exemplo do livro da Kathy, ele poderia estar rodando bem quando se executou a linha 14:

14. System.out.println("After GC Memory = " + rt.freeMemory());

nilolima

Olha só

Antes de vc executar o for vc imprimiu na tela quanto havia de memória livre, correto?
Executou o for que alocou vários objetos na memória, mas logo em seguida tirava a referência para o objeto, sendo assim deixando-o elegível pelo GC.

Quando termina o for e vc imprime novamente o tamanho da memória livre ele não é igual ao que vc imprimiu antes do for, pelo menos provavelmente não.

Vc vai e chama o coletor de lixo que deveria tirar da memória todos os objetos desreferenciados. Como o quando o GC é executado não é garantido. Provavelmente vc não irá ver na tela o mesmo valor inicial de memória livre.

Acho que é isso que esse exemplo quis mostrar.

Espero ter ajudado, boa sorte

marcioarend

Quando vc “força” a JVM a coletar o lixo ela nem sempre faz isso.

Não é pq um objeto poder ser excluido é que ele será excluido com certeza quando vc chama o GC.

O foda que vc tem saber destas coisas pra fazer o exame de certifição

Abraço

LPJava

nao entendi os valores apos o for…

T

Você podia postar os resultados desse código na sua máquina?

O que você não entendeu nos resultados?

Criado 23 de novembro de 2006
Ultima resposta 23 de nov. de 2006
Respostas 5
Participantes 5