Em algumas lingugens como Pascal, C++ e C, vc pode fazer o gerencimento de memória manualmente, mas em Java temos o Garbage Colletion e podemos não ligar para isso, certo? Não errado, seu programas em Java podem perfeitmente estorar memória do mesmo jeito que os programas em C o fazem quando esquecemos de usar o free para liberar a memória.
Imaginemos que estamos querendo implementar uma classe com o java.util.ArrayList, é rasoável supor que teremos de implementar uma rotinar para retirar elementos do nosso aray, algo como o código pop abaixo:
public Object pop(){
if (size == 0)
throw new EmptyStackException();
return elements[ --size];
}
Na muito exepcional, esse código compilaria e rodaria sem problemas, passaria em muitos teste, mas de vez em quando poderia causar degradação da performace e em casos extermos um OutOfMemoryError, isso porque o array elements pode ficar cheio de referências não utilizados. Um jeito de corrigir isso seria algo como o código abaixo:
public Object pop(){
if (size == 0)
throw new EmptyStackException();
elements[size] = null;
return elements[ --size];
}
Agora o elemento eliminado do array elements é elegível ao processo de eliminação do Garbage Colletion e não teremos os problemas apresentados no código anterior.
domingo, 2 de agosto de 2009
Assinar:
Postar comentários (Atom)
Um comentário:
manda um email pra mim, pra eu saber a qual responder
abs
moreno.barros@gmail.com
Postar um comentário