Dúvida sobre o método destroy

Quando eu devo usar o método destroy ? Nunca ? Periódicamente ? Quando o catador de lixo do Java passa e vamos supor manda o servlet pra fora ele utiliza esse método ?

[]s

[color=“darkblue”]Olá!
O java já faz a destrição de objetos automáticamente (me corrijam se eu estiver errado).
Agora se vc quer q apartir de um determinado momento do programa aquele abjeto não seja mais utilizado então vc aplica o destroy().
Então vemos que vc deve usar esse método apenas qnd houver a sua necessidade!
OK??

[]'s[/color]

eh isso ai riqueneil, esse esquema de destruicao automatica de objetos em java eh chamado de Garbage Collector ou simplesmente gc.
Se vc quiser forçar a coleta do lixo (limpeza da memoria) basta chamar System.gc();

o método destroy() de um servlet é chamado pelo container qdo o servlet é destruído (qdo uma instância é descarregada, ou o container é desligado).

vc pode pode utliza-lo para determinar q alguma coisa seja executada qdo o servlet for destruídio, por exemplo, fechar uma conexão com o db, ou efetuar logoff do sistema

[]'s

Muito Obrigado … dúida tirada … :wink:

Acho que está havendo um mal entendido quanto ao método destroy.

O que a API sugere é o seguinte:

  • o método destroy, assim como o método init, é chamado uma e somente uma vez pelo container e nunca pela servlet.

Exemplificando:

Coloquei o container no ar;

Outras servlets foram chamadas e executadas;

A servlet em questão é chamada por um usuário;

A classe da servlet é então carregada na memória.

Uma instância é criada pelo container;

O método init desta instância é executado;

A instância gera a response ao usuário;

A instância é abandonada, ficando a mercê do GC;

Outro usuário chama a servlet;

Uma nova instância é criada pelo container;

O método init NÃO é executado;

O container é fechado pelo administrador;

O container espera todas as instâncias ativas terminarem de gerar a sua response;

A última instância da servlet em execução na memória ‘apaga a luz’, chamando o seu método destroy.