8.8. Garbage collection

O que acontece quando nenhuma variável referencia um dado objeto? Por exemplo:

A primeira instrução cria um novo objeto do tipo StringBuilder e atribui a referência a esse objeto à variável sb.

A segunda instrução acrescenta a String "Olah!" ao objeto referenciado por sb.

A terceira instrução muda o conteúdo da variável sb de modo a ficar null.

Repare que o objeto StringBuilder que foi criado deixou de estar acessível pois não é referenciado por nenhuma variável do programa.

Se um objeto não é referenciado por nenhuma variável do programa, então não é possível invocar um método sobre esse objeto, nem usá-lo para nenhum outro propósito. Na verdade, é como se deixasse de existir pois ninguém o conhece ou lhe pode aceder.

O mecanismo de recolha de lixo (garbage collection) do Java liberta automaticamente o espaço de memória que os objetos inacessíveis estão a ocupar, para que possa ser usado quando for necessário atribuir espaço de memória a outros objetos do programa.

Esta pesquisa por objetos “perdidos” é feita periodicamente pelo sistema, durante a execução de um programa; é por isso que, em Java, não temos que incluir instruções explícitas de destruição de objetos, pois sabemos que, mais cedo ou mais tarde, a memória que eles ocupam vai ser libertada.

 


 

Anterior: 8.7. null

Seguinte: 8.9. Ficheiros de texto - leitura e escrita