Preciso destruir o objeto?

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?

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

    arquivo = null;

}[/code]

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

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!

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+

Galera, obrigado pela ajuda!