O que acontece quando nenhuma variável referencia um dado objeto? Por exemplo:
StringBuilder sb = new StringBuilder();
sb.append("Olah!");
sb = null;
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