DEV Community

Tente Isto 4-2: coleta de lixo e a finalização

Já que a coleta de lixo é executada esporadicamente em segundo plano,
não é fácil demonstrá-la. No entanto, uma maneira de fazê-lo é com o
uso do método finalize( ). Lembre-se de que finalize( ) é chamado quando um objeto está para ser reciclado. Como explicado, os objetos não são necessariamente recicla dos assim que não são mais necessários. Em vez disso, o coletor de lixo espera até poder executar sua coleta de maneira eficiente, geralmente quando há muitos objetos não usados.

Logo, para demonstrar a coleta de lixo via método finalize( ), temos de
criar e destruir vários objetos – e é exatamente o que faremos neste projeto.

1 Crie um novo arquivo chamado Finalize.java.

2 Crie a classe FDemo:
Image description

O construtor configura a variável de instância x com um valor conheci
do. Nesse exemplo, x é usada como uma identificação de objeto. O método
finalize( ) exibe o valor de x quando um objeto é reciclado. De especial interesse é generator( ). Esse método cria e então descarta imediatamente um objeto FDemo. Você verá como ele é usado na próxima etapa.

3 Crie a classe Finalize:
Image description

Essa classe cria um objeto FDemo inicial chamado ob. Em seguida, usando
ob, ela cria 100.000 objetos chamando generator( ) em ob. Como resultado, 100.000 objetos são criados e descartados. Em vários pontos no meio do
processo, a coleta de lixo ocorrerá. Muitos fatores vão influenciar exatamente com que frequência ou quando, como a quantidade inicial de memória livre e o sistema operacional. No entanto, em algum momento, você começará a ver as mensagens geradas por finalize( ). Se não conseguir vê-las, tente aumentar o número de objetos que estão sendo gerados elevando a contagem no laço for.

Top comments (0)