PermGen space - NetBeans - Só na Hora de Debugar me acontece isso... Muito estranho

10 respostas
R

Caros Amigos do fórum… Estou aqui tendo um serio problema de PermGen, sei que o assunto já foi tratado em outros tópicos, porem de todos não achei uma solução que se encaixe ao meu problema, muitas vezes nem solução achava.

Frameworks e API?s que estou utilizando:

  • Spring
  • Hibernate
  • Blase DS (Para comunicação do Flex)
  • JasperReport 4.1

Servidores testados foram TomCat 7.0.11 e 6.0

Estou com 60 Mb so de Lib?s, pois esse projeto já vem de outras gerações.
Eu uso o NetBeans como ferramenta de desenvolvimento e o Flex builder.

O problema esta na hora que vou debugar o sistema não roda dando o erro de PermGen, com isso eu tenho que colocar no código System.out.println(); pra ir debugando… Tenso neh…

Já tentei aumentar a memória, mais só adio o meu problema, Agora já não tenho o que aumentar.

Alguém já passou por alguma coisa assim?

Desde já eu agradeço a atenção de todos…

Desabafo:
Java é muito bom, não nego, mais tem hora que acontece certas coisas que não tem explicação, e nos deixam de cabelos brancos por dias…

+Google

10 Respostas

ddark.emanu

Acabei de resolver esse problema assim :

fui na pasta do tomcat
C:\apache-tomcat-7.0.16\conf\Catalina\localhost

e limpei os projetos que tinha no tomcat

ViniGodoy

Primeiro, é necessário que você entenda o que é esse problema e por que ele ocorre.
Leia:

Apagar arquivos, aumentar o limite de memória, etc, é tapar o sol com a peneira.

Isso ocorre em qualquer linguagem. Se você acha o Java ruim, experimente programar em C++.

AnjoVingador

ViniGodoy:
Primeiro, é necessário que você entenda o que é esse problema e por que ele ocorre.
Leia:

Apagar arquivos, aumentar o limite de memória, etc, é tapar o sol com a peneira.

Isso ocorre em qualquer linguagem. Se você acha o Java ruim, experimente programar em C++.

Aproveitando o tópico…
Deixa eu te perguntar uma coisa ViniGodoy.
Passei por isso também e fui a fundo no problema, inclusive identificando o lixo que tinha ficado na memória.
Mas a questão é a seguinte, eu estou usando Hibernate e a maioria do lixo é relacionado a ele.
Como eu vou remover isso?
Eu estou usando do jeito convencional através do DAO.
Já olhei meu código muitas vezes e não consigo achar um lugar para refatorar.
Não seria uma caracteristica do Hibernate poder causar isso?

Desde já agradeço.

ViniGodoy

Geralmente o que causa isso são objetos estáticos.
Só usando o profiler para descobrir que tipo de coisa você está fazendo e onde.

Mas há risco do Hibernate estar segurando lixo, sim. Aí, só abrindo tickets e torcendo para eles corrigirem (quando tive o problema, tive que abrir tickets e até postar a solução para o pessoal do Groovy).

Só o que não pode é simplesmente aumentar o PermGen space e fingir que isso resolveu o problema. Mesmo que ele não possa ser corrigido, é obrigação do desenvolvedor entender como e porque ele ocorre e tentar minimizar seus impactos.

AnjoVingador

ViniGodoy:
Geralmente o que causa isso são objetos estáticos.
Só usando o profiler para descobrir que tipo de coisa você está fazendo e onde.

Mas há risco do Hibernate estar segurando lixo, sim. Aí, só abrindo tickets e torcendo para eles corrigirem (quando tive o problema, tive que abrir tickets e até postar a solução para o pessoal do Groovy).

Só o que não pode é simplesmente aumentar o PermGen space e fingir que isso resolveu o problema. Mesmo que ele não possa ser corrigido, é obrigação do desenvolvedor entender como e porque ele ocorre e tentar minimizar seus impactos.


Bom eu entendi o problema, vi o lixo mas não consegui resolver e acabei aumentando o PermGen.
Mas não gosto deste tipo de coisa, mas foi o “jeito” encontrado.
Como você usa o hibernate nas suas aplicações web?
Você conseguiu resolver esse problema usando o hibernate?
Posso está usando de maneira que gere isso.

Obrigado pela resposta.

ViniGodoy

Com Java só desenvolvi para Desktop, quase nada para web.

Existe um comando no profiler para descobrir quem é o objeto raiz, que está segurando todo mundo. Não lembro ele de cór, mas assim que verificar eu posto aqui.

R

O que eu não entendo é que só no debug do netbeans acontece isso…

Estou vendo os fórum que você me indicou e fazendo o rastreamento aqui…

Só por desencargo de consciência, isso não seria um problema do NetBeans?

Ate semana passada eu estava debugando normal, na segunda feira começo este problema, porem so na minha maquina…
o mesmo projeto debug normal na maquina do cara que participa deste mesmo projeto…
Sendo que a minha maquina apresenta uma configuração um pouco melhor comparada a outra…

ViniGodoy

Não é um problema do Netbeans.

Se o problema está acontecendo com um de vcs, considerem-se com sorte. Seria muito pior se esse um fosse o cliente. Erros assim muitas vezes são difíceis de isolar e corrigir mesmo.

R

ViniGodoy:
Não é um problema do Netbeans.

Se o problema está acontecendo com um de vcs, considerem-se com sorte. Seria muito pior se esse um fosse o cliente. Erros assim muitas vezes são difíceis de isolar e corrigir mesmo.

Ok… vou continuar aqui… qualquer coisa posto o que aconteceu…
Valeu…

R

Ainda não descobri o que era exatamente mais troquei a versão do tomcat e funcionou… eu usava o 7.0.11 que acompanha o netbeans e coloquei uma que eu tenha estalado e funcionou…
Mais vou estudar o Profle mais…
Valeu ViniGodoy…

Criado 14 de julho de 2011
Ultima resposta 16 de jul. de 2011
Respostas 10
Participantes 4