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?
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.
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.
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?
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”).
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.
Ok,
será q o parâmetro XX:MaxPermSize estava incorreto?!
Vou acompanhar andamento do servidor, qualquer resultado, seja positivo ou negativo, posto novamente.
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 …