Coleta de lixo
Coleta de lixo refere-se ao processo de liberar automaticamente a memória na pilha excluindo objetos que não podem mais ser acessados em seu programa. Existem muitas diferenças de algoritmos para a coleta de lixo, mas você não precisa conhecê-los para o exame. Você precisa saber que System.gc() não é garantido que será executado, e você deve ser capaz de reconhecer quando os objetos se tornam elegíveis para coleta de lixo.
Vamos começar com o primeiro. Java fornece um método chamado System.gc(). Agora você pode pensar a partir do nome que isso diz ao Java para executar a coleta de lixo. Não! Humildemente sugere que agora pode ser um bom momento para o Java iniciar uma coleta de lixo. Java é livre para ignorar o pedido.
A parte mais interessante da coleta de lixo é quando a memória pertencente a um objeto pode ser recuperada. Java espera pacientemente até que o código não precise mais dessa memória. Um objeto permanecerá no heap até que ele não esteja mais acessível. Um objeto não é mais alcançável quando uma das duas situações ocorre:
■ O objeto não possui mais referências apontando para ele.
■ Todas as referências ao objeto ficaram fora do escopo.