Uso de memória no TOMCAT

12 respostas
Luiz_Henrique_Coura

Estou testando uma uma aplicação de geração de gráficos onde estou utilizando a API JFreeChart para tal.

Para testes estou utilizando ambiente Windows JVM - 1.4.2_04-b05 - Tomcat 5.0.28 e para cada requisição a JVM utiliza 3Mb de memória para geração do gráfico.

Qd coloco essa aplicação rodando no servidor “Titular” ( Tru64 UNIX V5.1A JVM - 1.4.1-2 - Tomcat 5.0.28 ) a JVM utiliza 5Mb a 10Mb para gerar o gráfico.

Não estou colocando nada na sessão. Apenas gero o gráfico com os dados pesquisados no BD MySQL.

Log do Tomcat no Windows:
Free memory: 9.72 MB Total memory: 22.24 MB Max memory: 63.31 MB

Log do Tomcat no UNIX:
Free memory: 11.71 MB Total memory: 104.00 MB Max memory: 4096.00 MB

No ambiente UNIX a Total memory aumenta sempre. Qd chega em 613MB ela não aumenta mais, acusando falta de memória para geração dos gráficos.

Nesse servidor Tomcat do UNIX tenho apenas duas aplicações. As duas geram gráficos.

As vezes preciso stopar o servidor Tomcat no UNIX para limpar a memória.

O q eu posso fazer para diminuir o gasto de memória?

Valeu!

12 Respostas

Rafael_Steil

Mudar de VM. Em comparacao a version 1.3.x, a 1.4.x eh estupidamente mais lenta / consumidora de recursos. Com o Java 5 nao tenho ideia.

Rafael

Luiz_Henrique_Coura

Rafael, não entendi direito:

A JVM 1.4.x é mais lenta q a JVM 1.3.x ou é o contrário?

Rafael_Steil

A 1.4 eh mais lenta que a 1.3 para manipuar imagens. Isso pq na 1.3 sao utilizadas bibliotecas nativas, enquanto na 1.4 eh tudo feito “no braco” (aka, tudo eh codigo java)

Rafael

Shelson

Quais sao as bibliotecas nativas que cuidam disso Rafael ?

Rafael_Steil

Nao tenho a minima ideia.

Rafael

Paulo_Silveira

varia de acordo com o SO

Luiz_Henrique_Coura

Com relação a velocidade está muito bom, mas estou tendo problema com relação ao uso de memória.

Vou fazer outros testes com uma JVM mais atual.

Valeu pessoal!

Rafael_Steil

Se vc pegar as listas do JAI e outra discussoes na net, vai ver que tem mta coisa relacionada a qtde abusrda de memoria que eh consumida. Tem umas libs “especializadas”, mas nao tenho a minima ideia de quao boas sao… seria uma boa hora para testar (embora pareca que, no caso do jfreechart, nao tem como como espacapar da implementacao “oficial”)

Rafael

louds

Você tem um memory leak, arrume isso primeiro.

O Tru64 vai usar mais memoria porque é um SO 64bits. Isso é obvio. O quanto pode variar entre 0% e 100% a mais. Logo você não tem como fazer o consumo ficar igual, sinto te informar disso.

Teu problema é um memory leak e talvez um pouco de tunning na JVM, um heap de 4 giga exige um pouco de cuidado.

Luiz_Henrique_Coura

O Memory Leak pode estar sendo causado pelo meu sistema ou está relacionado com a JVM?

Vc teria um conselho por onde eu poderia começar a corrigir o problema de Memory Leak?

Obrigado!

cv1

Use um profiler bom (JProfiler sendo o meu favorito, mas nao sei se a JVM do Tru64 suporta), bole um kit de testes (codigo que acessa todas as partes interessantes da sua app repetidamente), e identificar os leaks nao deve ser muito dificil. :slight_smile:

louds

Pode ser que o leak seja na JVM… eu acredito que se o memory leak existe no unix, deveria existir também no windows. Mas não tem como escapar de fazer muito profiling/tracing mesmo…

Criado 4 de março de 2005
Ultima resposta 5 de mar. de 2005
Respostas 12
Participantes 6