oi pessoal
eu falei ontem com muita gente, que estava com um problema com o garbage collector numa aplicacao web.
depois de procurar muito, descobri que minha session tinha 600 minutos, q sao 10 horas de milhares de usuarios logados no seu tomcat. muita gente usa o sistema, entao a aplicacao batia 100 megas em menos de uma hora. mudei o timeout, melhorou bastante.
Mesmo assim a memoria ia aumentando vagarosamente.
Ai descobri o vilao: a api de logging do java 1.4.
Bem, eu crio MUITOS loggers, um para cada usuario (100 usuarios acessam em uma hora). e eu nem fecho logger nenhum, porque voce pede o logger por um factory, que repassa para o LogManager, e esta escrito assim na documentacao:
[quote]
The application should retain its own reference to the Logger object to avoid it being garbage collected. The LogManager may only retain a weak reference.[/quote]
mas DENTRO do codigo fonte, olha soh:
...
// We're adding a new logger.
// Note that we are creating a strong reference here that will
// keep the Logger in existence indefinitely.
loggers.put(name, logger);
FALA SERIO. guarda strong reference. se fosse soft ao menos!!! Eles escrevem uma coisa e fazem outra. ABSURDO.