OutOfMemoryError

6 respostas
D

Olá Pessoal, tenho uma aplicação que agora começou a dar OutOfMemoryError… onde possuo várias Threads e faço várias manipulações em base de dados, como Inserir, atualizar…

Em fim, olhei todo o meu fonte, e pelo visto tá OK, ou eu não estou enchergando o erro…

A pergutna é a seguinte:

Existe alguma ferramenta que me diga em que linha de comando eu estou errando?

OU

Existe alguma ferramente que me indique o momento em que está estrapolando a memória?

Obs. Estou estartando assim: C:\xxx\xxx\java - jar -Xmx512M aplicacao.jar

Existe outra maneira de startar a aplicação diferente dessa onde poça evistar o OutOfMemoryError?

Desde já agradeço alguma ajuda.

6 Respostas

pcalcado

Olá, use um profiler e estude sobre otimização de GC.

dreamspeaker

Dá uma olhada na opção -verbosegc, talvez te ajude.

E dá uma googleada por “profilers”, que são programas que exibem como está sendo utilizada a memória da sua aplicação. Tem um cara que se chama JProbe, eu cheguei a resolver alguns problemas com ele, como objetos instanciados sem necessidade, etc.

Z

E só pra confirmar, fique certo de que está fechando todos os recursos que está abrindo.

C

Se o seu sistema realmente tem um alto numero de threads, e a exceção for algo como: java.lang.OutOfMemoryError: unable to create new native thread
A solução para este problema é utilizar o parâmetro -Xss da JVM para especificar o thread stack size. Por exemplo, -Xss128K, alocará 128K para cada thread. Caso a thread necessite de mais espaço, a máquina virtual alocará mais, conforme a thread precise.

D

Beleza pessoALL, estou baixando neste momento o JProb, e vou ver como estou utilizando minha memoria… espero que consiga resolver isso com o JProb, pois isso tá dando uma dor de cabeça q vcs nem imaginam…

Obs. Não é java.lang.OutOfMemoryError: unable to create new native thread
é somente java.lang.OutOfMemoryError.

C

Esses links podem lhe ser util:

http://www-128.ibm.com/developerworks/java/library/j-leaks/
:thumbup:

Criado 19 de maio de 2005
Ultima resposta 19 de mai. de 2005
Respostas 6
Participantes 5