OutOfMemory

8 respostas
M

Pessoal em determinada situação, ainda desconhecida, minha app web gera um erro do tipo java.OutOfMemory… e dai a app para de funcionar como deve…

Alguém sabe como resolver esse problema…e o que é OutOfMemory

Obrigado.

8 Respostas

T

Quibeleza :evil: , esse erro é óbvio (alguma coisa estourou a memória disponível) mas é difícil de diagnosticar corretamente (porque normalmente o Java fica tão sem memória nesses casos que não consegue nem imprimir o stack trace, pelo menos até a versão 1.4).

E mesmo que imprimisse um stack trace, não adiantaria muito porque o erro normalmente ocorre em um lugar diferente do lugar que causou a falta de memória.

(É a mesma coisa que ocorre quando você deixa de pôr gasolina no carro: a falha ocorre no motor, mas o problema é falta de gasolina, não alguma coisa interna no motor).

Pode ser um erro de aplicação (como uma rotina que alocou memória demais), ou então realmente você está com um sistema grande que precisa de mais memória.

No segundo caso você pode ajustar os parâmetros de inicialização do Java. Normalmente você passa um parâmetro como -Xmx512m (no caso de você querer alocar 512MB de memória máxima para o Java).

No primeiro caso talvez você possa fazer um “profile” do sistema e ver se há algum “vazamento de memória”.

M

Vou tentar o caso acima, como eu configuro esse parametro nos OS Linux e Windows…?

Paulo_Silveira

assim mesmo como o thingol falou.
java -Xmx512M pacote.Classe

Se for um servidor de aplicacao ou web, muitos leem essas opcoes da variavel de ambiente definida por JAVA_OPTS

T

Então, o que você está usando? Tomcat, JBoss, Sun Java Application Server, IBM Websphere, BEA Weblogic, iPlanet, o que afinal?
Isso é um parâmetro que você passa para o executável do java (na linha de comando), mas para cada um desses ambientes você precisa ajustar um script (run.bat ou run.sh no caso do JBoss), ou mexer num arquivo de configuração, para que você possa modificar o tal parâmetro.
No caso específico do Websphere e do Weblogic, não sei se o parâmetro tem o mesmo nome (parâmetros que começam por -X, como -Xmx, são específicos de cada JVM.) Você precisa ver na sua documentação.

M

Eu estou usuasando apache e tomcat em um servidor BSD.

O Servidor BSD tem 2 processadores PIII, 1Gb, de ram é bem parruda + está abrindo o bico…OutOfMemory…, o mesmo problema está acontecendo com outro servidor HPUX…

Como eu faço para ver o valor da memoria que está setado atualmente. e com e onde eu seto um novo valor…?

_fs

Pergunta besta: você está fechando todos os objetos “fecháveis”, como Connections, OutputStreams, ResultSets etc, certo?

T

Hum, não conheço a JVM que roda em BSD, mas deve ser aquele “port” da JVM da Sun que foi baseada na versão Linux da JVM. Só diz pra gente o que é impresso por java -version

Por exemplo, em uma máquina Linux que está rodando a Sun JVM obtive o seguinte valor com java -version:

java version “1.4.2_05”
Java™ 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)
Java HotSpot™ Client VM (build 1.4.2_05-b04, mixed mode)

Pelo que pode ser lido em bin/catalina.sh existe uma variável de ambiente JAVA_OPTS que você pode setar no seu .profile, ou no .profile do usuário que é usado para iniciar o Tomcat, e que você pode mexer

Por exemplo:
JAVA_OPTS=-Xmx512m ; export JAVA_OPTS

Obviamente você precisa reiniciar o Tomcat para ver as modificações.

M

Quanto a pergunta besta… acredito que vc já foi iniciante algum dia.

Quanto a sua sugestão já verifiquei se todos os “objetos fechaveis estão fechados.” .

obs. pessoal estou online full time. segue o post

Eu estou usuasando apache e tomcat em um servidor BSD.

O Servidor BSD tem 2 processadores PIII, 1Gb, de ram é bem parruda + está abrindo o bico…OutOfMemory…, o mesmo problema está acontecendo com outro servidor HPUX…

Como eu faço para ver o valor da memoria que está setado atualmente. e com e onde eu seto um novo valor…?

Estou usando OJB, existe alguma configuração para otimizar? ex: maxInactivePoll etc…

Criado 9 de novembro de 2004
Ultima resposta 10 de nov. de 2004
Respostas 8
Participantes 4