OutOfMemoryError: PermGen space usando tomcat + birt

12 respostas
thiagocg

Olá pessoal, boa tarde!

Estou com um problema aqui um tanto estranho, tenho algumas aplicações que usam jsp e servlets que rodam no tomcat, estas aplicações possuem relatórios gerados pelo birt que estão funcionando normalmente, acontece que quando adiciono uma aplicação jsf ao tomcat caso eu execute algum relatorio o tomcat “cai” gerando o famoso “java.lang.OutOfMemoryError: PermGen space”. O estranho é que se eu retirar a pasta do birt do tomcat, todas as aplicações rodam normalmente sem apresentar erro algum, adicionando o birt viewer no tomcat acontece o erro.

Dei uma procurada no google mas não achei nada relacionado.

Alguem já passou por isto?

[]'s

12 Respostas

A

thiagocg,

Seria interessante sabermos por qual processo esta passando sua aplicacao na hora de gerar o relatorio…

Para analisar o que esta “sobrecarregando” a memoria usada…

abs

thiago.correa

Você pode aumentar a memória alocada para esse processo java! Mas é bom você dar uma revisada no teu código para ver se não possue códigos que consomem muita memória, ou se possue muitos atributos estáticos, como disse o VinnyGodoy é bom entender o porque do erro!

Mas enfim, para aumentar o tamanho do heap basta acrescentar esse parâmetros no processo do tomcat

-Xms528m -Xmx768m -XX:NewSize=128M -XX:PermSize=128M

thiagocg

Obrigado a todos pelas respostas, então como eu relatei, caso eu retire apenas o projeto do birt da pasta webapps do tomcat todas as aplicações rodam normalmente sem estouro de memoria, ja fiz o teste de um dia inteiro com varias pessoas acessando as aplicações e não ocorreu nenhum erro.

Eu imagino que possa ser alguma biblioteca que esteja conflitando entre as do jsf e do birt.

Estou usando o tomcat em modo serviço do windows, eu ja havia setado:
initial memory pool : 256mb
maximum memory pool : 768mb

quanto ao processo é apenas chamado um servlet que faz o direcionamento como:

contexto+"/birt2.5/frameset?__report=nome_do_grafico_ou_relatorio.rptdesign"

Mais uma vez obrigado pelas respostas!

[]'s

Andre_Fonseca

Oi,

Existe uma aplicação disponibilizada junto com o jdk que pode te ajudar a descobrir onde está o problema

o caminho dela é

talvez ajude

abs

thiagocg

Olá André, eu ja tinha dado uma olha no jconsole, mas como nunca havia utilizado ele acabei tentando achar alguma outra resposta antes. Mas agora vou da uma olhada melhor nele pra ver como eu monitoro o uso da jvm a partir do tomcat nele.

Obrigado!!

[]'s

thiagocg

Pessoal, pra quem ja usou o jconsole, gostaria da opnião de vcs sobre a imagem em anexo.

Bom vou explicar primeiro, rodei as aplicações conforme eu comentei nos posts anteriores, e monitorando pelo jconsole não consegui identificar pois aparentemente não está havendo nenhum problema com a utilização da memoria disponivel pra vm (imagem em anexo).
O problema é que o jconsole perde a conexão com o tomcat, pois ele cai no momento que eu gero o relatorio.

Alguem poderia me dizer se há alguma evidencia que não estou observando na imagem?

Como a imagem é maior que o tamanho maximo permitido pelo forum esta disposivel no endereço:
http://img94.imageshack.us/content_round.php?page=done&l=img94/1859/monitortc.png&via=mupload

Grato a todos!

[]'s

Andre_Fonseca

oi,

descupe, não consegui ver a imagem, vc pode tentar carregar a imagem diretamente usando as tags image?

abs

Edit: mais alguns links que podem ajudar abaixo

http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

http://www.guj.com.br/posts/list/62387.java

thiagocg

Nunca usei essa tag image, mas vamos lá!

Agora deu certo, ta ai a imagem, valeu pela dica da tag ‘img’ André!

To saindo do meu freela e amanha vou dar mais umas pesquisadas.

André, valeu pela força cara!

[]'s

Andre_Fonseca

oi,

ainda não consigo ver a imagem :frowning:

thiagocg

André, deve ser a rede que ta bloqueando, pq aqui do meu serviço tb fica indisponivel a imagem e ontem eu olhei do meu freela e tava exibindo a imagem, e tb olhei da casa da minha namorada e tb visualizei a imagem, to testando aqui procurando com a ajuda do jconsole achar alguma possibilidade.

Se quiser posso te enviar a img por email.

Grato.

[]'s

Andre_Fonseca

thiagocg:
André, deve ser a rede que ta bloqueando, pq aqui do meu serviço tb fica indisponivel a imagem e ontem eu olhei do meu freela e tava exibindo a imagem, e tb olhei da casa da minha namorada e tb visualizei a imagem, to testando aqui procurando com a ajuda do jconsole achar alguma possibilidade.

Se quiser posso te enviar a img por email.

Grato.

[]'s

oi,

deve ser isso mesmo

então, para tentar identificar o problema você deve olhar na aba memory e selecioner o perm gen enquanto usa sua aplicação

o jconsole acho que serve apenas para uma análise inicial (apenas monitorar a aplicação), se não conseguir identificar nada acho que talvez o que ajude é usar um profiler, tem o do netbeans por exemplo que dizem ser muito bom mas eu não usei (nem conheço muito netbeans)

aquele artigo da sun tem algumas boas dicas de como usar o jconsole

você por acaso já rodou algo como o findbugs na sua aplicação? esse vazamento de memória pode ser até uma coisa simples como um pool de conexões que não está sendo fechado. o findbugs pode te ajudar com isso

abs

Andre_Fonseca

oi,

agora consegui ver a img, realmente deveria ser coisa do proxy… bom, analisando a img dá pra ver que depois que tem aquele pico de utilização da CPU cai tudo

você conseguiu perceber o que acontece quando tem esse pico?

abs

Criado 19 de abril de 2010
Ultima resposta 20 de abr. de 2010
Respostas 12
Participantes 4