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]
-------------------------------------------------------------------------

Responder a