Melhor maneira de coletar lixo da session

Ae galera, utilizando o struts em uma aplicacao WEB notei que alguns objetos de formularios e umas collections ficam na session (as collections claro q eu coloco para fazer uso do iterate) …
O que acontece eh q depois de um tempo fica MUITA coisa na sessao… qual eh a melhor maneira de limpar isso???
queria algo mais automatizado…

Abraços

javax.servlet.http.HttpSession.invalidate(): Invalidates this session and unbinds any objects bound to it.

http://java.sun.com/products/servlet/2.2/javadoc/index.html

Acho q vc nao entendeu…
Eu nao quero invalidar a sessao… apenas queria q os objetos ligados a DETERMIDADA parte da minha aplicação q nao serao mais usados fosses limpos… o problema maior eh qto aos forms do struts…

Então aí já entra aquela velha discussão: quando é que o GC passa para pegar os objetos sem referência? A resposta é: quem sabe? O que você pode fazer é usar weakreferences (ou soft? sempre confundo!!) em todo o lugar; assim, sempre que elas saírem de escopo, elas serão marcadas para serem coletadas.
Uma outra idéia é configurar o tipo de GC que sua VM vai usar. Dê uma olhada neste artigo (http://www.javaworld.com/javaworld/jw-03-2003/jw-0307-j2segc_p.html) e veja escolha a opção que for melhor para você.
Sobre retirar os objetos da sua session, então use o método removeAttribute(String).

p.s.: espero ter entendido seu problema agora.

Obrigado pela ajuda Daniel, mas acho mudar a condifguracao da VM aki eh muito complicado (o pessoal daki da area de suporte/infra eh MUITO cabeca dura, foi um custo eles atualizarem o tomcat)
Dei a seguinte solução(provisoria):
Imagine uma aplicacao de Agendamento e Outra de Atendimento
Na de agendamento eu uso os formulario form1 e form2
Na de atendimento os form3 e form4

Havera na sessao uma variavel chamada eraser que eh um vetor de String[]
e uma funcao que se chama clearSession que recupera a variavel eraser da sessao e itera sobre ela retirando assim todas as variaveis indicadas por ela…

quando entro no Agendamento a primeira coisa a fazer eh chamar clearSession… ele tenta recuperar eraser e limpar algo proveniente de outra aplicacao… dai ele seta eraser como new String[]{“form1”,“form2”} e guarda ela na sessao…

imagine q o usuario desistiu de agendar antes de chegar no final da aplicacao e assim form1 e form2 ficam na sessao. Dai ele clica no atendimento. Novamente a primeira chamada e clearSession. Ele acha o rase com o valor de “form1”,“form2” e deste modo limpa da sessao o q nao eh mais necessario…

Achoq deu pra entender neh??? No pior caso possivel ficara apenas variaveis de uma apliacacao na memoria desnecessariamente, mas eh melhor q se o usuario fizesse um tour pela apliacacao deixando lixo pra tras…

Espero q vc tenha entendido e se houver sugestoes elas sao bem vindas

Abraços

Outra opcao…

Varrer a sessao, removendo os atributos…

Ai o GC vai remover da memoria…

[]'s

Usa um Filter que remote os varios atributos programaticamente.