Preciso destruir o objeto?

3 respostas
Z

Pessoal,
após declarar e inicializar e utilizar um objeto, eu preciso destruí-lo?
Eu sei que no Java tem o Garbage Colector, mas se eu não declarar o objeto como sendo nulo, o GC coleta mesmo assim?
Um exemplo:

public void processar(String fileName){
        File arquivo = new File("C:\\" + fileName);
        FileInputStream istream = new FileInputStream(arquivo);
        //processar o istream
        istream.close();
    }

Nesse caso eu precisaria fazer alguma coisa pra retirar o objeto arquivo da memória? Isso seria uma solução?

public void processar(String fileName){
        File arquivo = new File("C:\\" + fileName);
        FileInputStream istream = new FileInputStream(arquivo);
        //processar o istream
        istream.close();

        arquivo = null;

    }

Ou isso não seria necessário?
Valeu e até +

3 Respostas

D

nao nao…

qdo o objeto nao for mais usado (nao tiver mais referencias ativas nele, o próprio GC faz o trabalho de liberar a memória! :grin:

flw!
abraços!

H

ZeroCool,

A memória alocada por um objeto só pode ser reclamada pelo GC se não houver nenhuma referência forte ao objeto.

O que é uma referência forte? Existem três tipos:

  • Um campo estático apontando para ele. Para abandonar o objeto, ao campo deve ser atribuído o valor null;

  • Um campo global apontando para ele. Pode ser atribuído null diretamente, ou automaticamente quando o objeto ao qual pertence o campo global for destruído pelo GC;

  • Um argumento ou um campo local ao método. Pode ser atribuído null diretamente ou automaticamente quando o } do método for atingido.

Além de referências fortes existem referências soft, weak e phantom. Mas isso é uma outra história…

T+

Z

Galera, obrigado pela ajuda!

Criado 16 de setembro de 2004
Ultima resposta 16 de set. de 2004
Respostas 3
Participantes 3