Gideoni, At 14:45 29/10/2002 -0300, Gideoni Hudson wrote: > Tenho um servidor com 756 Mb de Ram, iniciei o Tomcat com 128 Mb de Ram >através dos parametros -Xms e Xmx do Java. Após executar uma rotina várias vezes o >Tomcat tomou 260 Mb da Ram e não liberou mais, deixei o Tomcat sem serviço por várias >horas e ele não liberou nenhum byte. Devido a isso tenho algumas dúvidas. > O tamanho que o tomcat vai ocupar em memória depende das webapps que estão rodando dentro dele.
> 1) É normal o Tomcat pegar memória e não devolver para o SO? Qualquer aplicação Java (o tomcat é uma delas) não se relaciona diretamente com o SO, mas apenas com a JVM e esta, por sua vez, se relaciona com o SO. O Tomcat pode (e faz) cache de vários dados por motivo de performance. Eu analisaria a questão olhando quantas e quão grandes (do ponto de vista de alocação de objetos) são as webapps. Se forem mais de uma, experimente rodar cada uma individualmente e veja como ele se comporta. Outro ponto é se este valor de memória cresce até este pontoe depois se estabiliza, independente de houve nehum acesso ou milhões. Se ele crescer, pode ser que alguma aplicação tenha um "memory leak" . Por exemplo, uma Hashtable onde eternamente se incluem elementos e ela nunca "morre". > 2) As páginas e os dados gerados pela rotina são destruidos em qual momento ? No momento em que o garbage collector coleta os objetos. Simplificando, um objeto é considerado "coletável" quando não há mais nenhuma referência para ele. > 3) O coletor de lixo deveria liberar a memória não utilizada para o SO ? Sim e não. Na verdade a coisa funciona assim: A JVM aloca recursos com o SO. O garbage collector não interage diretamente com o SO, mas apenas com o heap (área de alocação de objetos) da JVM Se em algum momento, após a coleta de lixo, a JVM decidir liberar recursos para o SO, os recursos voltarão para o SO. Mas a própria JVM pode guardar um buffer de reserva. Você pode mudar os parâmetros de execução do Garbage Collector e de comportamento do heap. Dê uma olhada nos parâmetros extras da máquina virtual que você está usando. > 4) O Tomcat fica muito lento ou exibe o erro OutOfMemoryError depois que ele >ultrapassa o limite definido pelos parametros. Ele vai começar a dar OutOfMemory. Se vc quiser experimentar ver isso acontecer, coloque um parâmetro pequeno para o heap, -Xmx32m ou -Xmx32m por exemplo. Mas não faça isso num sistema em produção ;) Um abraço -- Mauro Nascimento Rezende Mondo Technologies Fone/Fax: +55 19 3234-5776 http://www.mondo.com.br > > > ________________________________ >Gideoni Hudson da Silva Braga >Analista de Sistemas > >Prevcaixa - Caixa de Previdência e Assistencia >+55 31 3226-8707 - Ramal:120 ><mailto:gideoni.hudson@;prevcaixa.com.br>[EMAIL PROTECTED] ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------