Programação Orientada a Objetos: Coletor de lixo em JAVA GC

porLuis Augusto Moretto

Programação Orientada a Objetos: Coletor de lixo em JAVA GC

Como funciona o coletor de lixo em Java

Programação orientada a objetos

O Coletor de lixo é um processo identificação dos objetos em uso na memória (heap) e quais não estão.

Após identificar os objetos que não estão em uso limpa a memória. (quem aloca a memória são os objetos e não as classes!)

Um objeto em uso, ou um objeto referenciado, significa que parte de seu programa ainda mantém um ponteiro para esse objeto.

Um objeto não utilizado ou objeto não referenciado, não é mais referenciado por qualquer parte do seu programa.

Portanto, a memória usada por um objeto não referenciado pode ser liberada.

Numa linguagem de programação como C, atribuir e desalocar a memória é um processo manual.

Em Java, o processo de desalocação de memória é processado automaticamente pelo coletor de lixo.

Como exemplo o Heap de um programa em Java teria as caixas azuis como objetos instanciados e os verdes como lixos na memória.

Memória de um programa em java

Chamando o System.gc()

Não é possível fazer uma chamada ao System.gc() e esperar uma limpeza imediata do Heap de memória. 

A instrução System.gc() é apenas uma recomendação!

Coleto de lixo em java Garbage Collector

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html