Olá pessoal,
estou com o seguinte problema, instalei em um servidor o glassfish(V2), mas estou frequentemente tendo problemas com Java Heap Space(java.lang.OutOfMemoryError). O servidor possui 4G de ram, e já configurei o tamanho do Heap em até 2G, mesmo assim o problema ocorreu. Após instação do servidor, manti a configuração padrão, alterando apenas a configuração do Heap, é possível que exista algum outro parâmetro que me auxilie na solução deste problema? É necessária alguma configuração adicional no próprio glassfish para resolver isto?
Esqueci d acrestar ao texto os parâmetros atuais da máquina virtual:
-XX:MaxPermSize=192m(esqueci de mencionar no texto)
-Xms128M -Xmx256M
Modifiquei hj para estes:
-XX:MaxPermSize=512m
-Xms256M -Xmx512M
T
thingol
a) Ele roda um sistema operacional de 32 ou de 64 bits? Se for um de 32 você provavelmente estará desperdiçando 1 GB ou um pouco menos.
b) Em um sistema operacional de 32 bits (Windows ou Linux) a Sun JVM enxerga no máximo 1,7 GB para o parâmetro -Xmx (se não me engano).
b) Será que não há alguma aplicação mal-comportada (por exemplo, alguma que deixe 3 MB de dados na sessão por usuário) que está exigindo tanta memória do Glassfish? Não é para acontecer isso.
F
fredzep
Linux - 64 bits.
O q poderia causar este tipo d comportamento alem dos dados na sessão do usuário?
Obrigado
Fred
F
fredzep
Eu olhei o monitor d aplicações do Glassfish, e verifiquei q as aplicações costumam manter na sessão somente alguma String, no máximo 3 instâncias d String para cada usuário.
Fred
T
thingol
fredzep:
Linux - 64 bits.
O q poderia causar este tipo d comportamento alem dos dados na sessão do usuário?
Obrigado
Fred
Linux - 64 bits -> hum… Será que você está usando a JVM de 32 ou de 64 bits? (Em caso de dúvida, passe a opção -d 64 para o java).
F
fredzep
java version "1.6.0_03"
Java™ SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot™ 64-Bit Server VM (build 1.6.0_03-b05, mixed mode)
F
fredzep
Eu estou acompanhando o tamanho do Heap, e ele tem ficado entre 200M - 300M, o fato, é que ele tem ficado nessa margem, será q os parâmetros antigos estavam incorretos?
-XX:MaxPermSize=192m -Xms128M -Xmx256M
T
thingol
Deve ser isso então. Os parâmetros mais importantes são, nesta ordem:
-Xmx - quantidade máxima de memória disponível para o processo
-XX:MaxPermSize - quantidade máxima de memória para classes compiladas, strings no pool etc, que são coisas que raramente são submetidas a garbage collection.
-Xms - quantidade mínima de memória disponível para o processo (seria a memória “inicial”).
T
thingol
Uma coisa que se diz no site da Sun é que se seu heap for menor que 1.7 GB você pode usar a JVM de 32 bits, porque ela é mais rápida e gasta um pouco menos de memória.
F
fredzep
Ok,
será q o parâmetro XX:MaxPermSize estava incorreto?!
Vou acompanhar andamento do servidor, qualquer resultado, seja positivo ou negativo, posto novamente.
Obrigado
Fred
F
ffranceschi
Já vi lugares que os caras faziam 2 servidores dentro de uma unica instancia de um servidor de aplicação, ai vc poderia ate mesmo fazer duas instancias de 1,5GB, apesar de ser gambiarra, mas …
F
fredzep
O problema voltou a acontecer. Procurando novamente uma solução na net, achei esta discussão: