Fazer dump de memória com Java

[ad#texto]

Muitas vezes nos deparamos com erros referente a alocação de memória heap em Java, isso se deve basicamente ao fato de que a alocação (que é variável pelo ambiente de execução) é pequeno e também porque em diversas API´s que utilizamos a falta de documentação induz o desenvolvedor a não sinalizar corretamente os objetos que irão para o Garbage Colletor.

A solução mais rápida é sem dúvida alterar os parâmetros de memória para a JVM, isso é realizado da seguinte forma:

-Xms256m -Xmx848m

Isto irá especificar novos valores de memória mínima que é aquela alocada ao iniciar a JVM e a memória máxima que é o limite da alocação de memória que a JVM irá fazer ao longo do uso, após isso provavelmente irá utilizar swap (paginação) o que resulta em perda de performance.

Mas isso não impede que o problema torna a se repetir e também não trata o problema efetivamente (lembre-se que em muitos casos pode ser uma falha de programação), então o correto é gerar um dump de memória, da seguinte forma:

-XX:+HeapDumpOnOutOfMemoryError

Isso irá gerar um dump toda vez que erros de OutOfMemoryError ocorrerem.

Para analisar este arquivo você pode utilizar o Eclipse Memory Analyser, assim será possível identificar exatamente qual classe e/ou objeto está causando o estouro de memória no Java e efetivamente corrigir o problema.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.