| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 08:37:21
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline
|
Recentemente comecei a receber o erro "OutOfMemoryError - PermGen space". Não se trata de um OutOfMemory error comum. Como o final da mensagem diz ocorre no "PermGen space", que é o local onde os classloaders são criados. Embora o problema seja mais comum nos applications servers, ele também pode ocorrer para aqueles que, como eu, usam linguagens de script. Buscando na net, achei dois ótimos artigos que falam a respeito do assunto, e recomendo a todos aqueles que trabalham com web, ou manipulam vários classloaders a leitura. O primeiro deles, fala a respeito do problema, exemplifica como e porque ele ocorre, e também mostra porque ele é um problema sutil. O segundo, já dá uma luz sobre como identificar os possíveis pontos de falha no código. http://blogs.sun.com/fkieviet/entry/classloader_leaks_the_dreaded_java http://blogs.sun.com/fkieviet/entry/how_to_fix_the_dreaded Outros artigos legal sobre o assunto é: http://cyriltech.blogspot.com/2010/08/understanding-permgen-errors.html Alguém aqui já passou pelo mesmo problema? Uma dica, no lugar do aplicativo indicado pelos artigos, você pode usar o Netbeans profiler para identificar o Permgen. A interface é mais limpa, mais rápida e mais fácil de usar.
This message was edited 6 times. Last update was at 14/07/2011 10:02:10
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 09:04:32
|
fnandos
JavaEvangelist
![[Avatar]](/images/avatar/a5287c074a4729ea3521dfe8eec6f83e.jpg)
Membro desde: 18/02/2008 10:57:42
Mensagens: 317
Localização: Santa Catarina
Offline
|
O TomCat tem muito disso, geralmente eu reinicio ele e pronto.
|
Quando saci entra na briga todo chute vira voadora! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 10:06:31
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline
|
fnandos wrote:O TomCat tem muito disso, geralmente eu reinicio ele e pronto.
É melhor entender o problema do que contorna-lo, sem corrigir...
No caso, a minha aplicação é que faz as vias do TomCat, mas rodando scripts Groovy do meu usuário.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 10:21:04
|
Rafael Nunes
Moderador
![[Avatar]](/images/avatar/d072677d210ac4c03ba046120f0802ec.png)
Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline
|
Eu ja tive isso com o Jboss4.0.5, o problema era com a lib do jboss-groups. Como temos contrato com a Red Hat aqui, nos enviaram uma lib corrigida.
|
------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."
http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/08/2008 23:59:41
|
brunolinsalves
JavaChild
Membro desde: 23/11/2007 09:14:21
Mensagens: 102
Offline
|
Ótimo post!
Me ajudou bastante...
vlw!
|
Sun Certified Java Programmer 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 08:50:30
|
Felagund
GUJ Master
![[Avatar]](/images/avatar/d8d855c465198499868fb2b566ebee8d.jpg)
Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline
|
Viny vc é o cara, nossa, como tava me batendo pra resolve isso, esses topicos ajudaram bastante, pra quem não conseguiu, seta a variavel de ambienta JAVA_OPTS, que o tomcat usa
por exemplo
abraços a todos
|
att
Rafael Felix
Rolling With Code
Twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:08:15
|
Rafael Nunes
Moderador
![[Avatar]](/images/avatar/d072677d210ac4c03ba046120f0802ec.png)
Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline
|
Felagund wrote:Viny vc é o cara, nossa, como tava me batendo pra resolve isso, esses topicos ajudaram bastante, pra quem não conseguiu, seta a variavel de ambienta JAVA_OPTS, que o tomcat usa
por exemplo
abraços a todos
Você não tá resolvendo o problema deste jeito, só adiando.
|
------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."
http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:17:02
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline
|
Rafael Nunes wrote:Você não tá resolvendo o problema deste jeito, só adiando.
Concordo. É melhor usar o JHat, descrito nos artigos, identificar a origem do problema e então corrigi-la. Se a origem for alguma biblioteca de terceiros, abra um issue para a biblioteca, como fiz com o pessoal do Groovy.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:17:51
|
Felagund
GUJ Master
![[Avatar]](/images/avatar/d8d855c465198499868fb2b566ebee8d.jpg)
Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline
|
Rafael Nunes wrote:
Felagund wrote:Viny vc é o cara, nossa, como tava me batendo pra resolve isso, esses topicos ajudaram bastante, pra quem não conseguiu, seta a variavel de ambienta JAVA_OPTS, que o tomcat usa
por exemplo
abraços a todos
Você não tá resolvendo o problema deste jeito, só adiando.
Como assim?
tem como explicar melhor?
|
att
Rafael Felix
Rolling With Code
Twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:23:49
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Felagund wrote: Como assim? tem como explicar melhor?
Setando esse parâmetro você só está aumentando a memória da PermGen. Mas se você está com um leak de memória um dia esses 256 também vão estourar. O que você precisa fazer é descobrir onde está o problema e resolve-lo.
This message was edited 1 time. Last update was at 13/08/2008 09:24:14
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:27:48
|
Rafael Nunes
Moderador
![[Avatar]](/images/avatar/d072677d210ac4c03ba046120f0802ec.png)
Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline
|
Felagund wrote:Viny vc é o cara, nossa, como tava me batendo pra resolve isso, esses topicos ajudaram bastante, pra quem não conseguiu, seta a variavel de ambienta JAVA_OPTS, que o tomcat usa
Como assim?
tem como explicar melhor?
Por exemplo se sua PermGen começava com 128m e você tinha problema depois de um dia da aplicação rodando, você dobrou o tamanho para 256m agora ela passara ter problema só depois de dois dias.
Ou seja, você deu mais espaço para a PermGen, agora ela vai demorar mais para encher, mas isso não vai impedir de ela continuar enchendo.
|
------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."
http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 10:14:07
|
Felagund
GUJ Master
![[Avatar]](/images/avatar/d8d855c465198499868fb2b566ebee8d.jpg)
Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline
|
a sim, mas pro meu problema serve, é somente para um servidor de testes aqui, a aplicação roda em um Xeon Quad core , não tem esses problemas, ams estamos fazendo alguns testes e coloquei rodar num maquina um pouco pior, e não conseguia tirar alguns relatorios, isso já resolve o meu problema.
[]'s
|
att
Rafael Felix
Rolling With Code
Twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 10:20:17
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline
|
Felagund wrote:a sim, mas pro meu problema serve, é somente para um servidor de testes aqui, a aplicação roda em um Xeon Quad core  , não tem esses problemas, ams estamos fazendo alguns testes e coloquei rodar num maquina um pouco pior, e não conseguia tirar alguns relatorios, isso já resolve o meu problema.
Ué, essa aplicação não irá para produção um dia??
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 14:28:03
|
Felagund
GUJ Master
![[Avatar]](/images/avatar/d8d855c465198499868fb2b566ebee8d.jpg)
Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline
|
ViniGodoy wrote:
Felagund wrote:a sim, mas pro meu problema serve, é somente para um servidor de testes aqui, a aplicação roda em um Xeon Quad core  , não tem esses problemas, ams estamos fazendo alguns testes e coloquei rodar num maquina um pouco pior, e não conseguia tirar alguns relatorios, isso já resolve o meu problema.
Ué, essa aplicação não irá para produção um dia??
ela já tah em produção, hehehe, o servidor de produção é o Xeon ele guenta, aqui tow rodando em um Athlon XP.
|
att
Rafael Felix
Rolling With Code
Twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/12/2010 15:21:01
|
Gustavo Marques
Thread.start()
![[Avatar]](/images/avatar/158a99d831c8cc639de57ba04fc1187b.jpg)
Membro desde: 25/10/2010 15:13:58
Mensagens: 49
Localização: Goiânia
Offline
|
Fiz um sisteminha para monitoramento da memoria JVM a distância, em uma aplicação web. Para facilitar a instalação fiz na forma de uma jsp com scriplets mesmo. Jogue a jsp lá e acesse que os números com gráficos são exibidos. Foi útil para eu identificar momentos de pico no uso da heap. Coloquei uma opção de chamar o Garbage colector. Depois de chamá-lo dá para ver o quanto o heap diminui. Também dá para ver o permgen space chegando no final e tomar alguma decisão na madrugada antes de um erro estourar no usuário. Enquanto vc vai corrigindo o código usando um bom profile, este 'profilezinho' até que quebra um galho.
Espero que seja útil
| Nome do arquivo |
jvm_memory.jsp |
Download
|
| Descrição |
|
| Tamanho |
7 Kbytes
|
| Baixado: |
266 vez(es) |
|
programador.gustavo@gmail.com |
|
|
 |
|
|