Há tempos tenho esse problema, mas como estou hospedando mais contextos no Tomcat ele acabou ficando mais crítico.
Antes eu usava a JVM da Sun. Comecei a procurar outras alternativas pois estava precisando reiniciar o Tomcat a cada 3 dias por causa do conhecido erro “OutOfMemoryError: PermGen space”. Após recomendações eu comecei a usar o JRockit e realmente o problema com a memória de geração permanente acabou.
O problema agora é outro. O JRockit possui outra memória “non-heap”, ele chama de “Class Memory”. O consumo dessa memória sempre aumenta, nunca diminui. E pelo que eu entendi não há limite para sua expansão, se faltar memória ela começa a usar a memória swap da máquina. Com o tempo ela aumenta tanto que a máquina fica extremamente lenta e a única solução é reiniciar o Tomcat.
Gostaria de saber se alguém já passou por uma situação semelhente e sabe algo que possa me ajudar. Eu reparo que quando atualizo os contextos a memória non-heap aumenta sensivelmente, não sei o que fazer para conter este aumento, se é algo natural ou se há uma forma de evitar.
Abraços a todos! 