Demoiselle Framework's Blog

17/10/2009

Erro de “Out of memory” PermGen

Arquivado em: PermGen — Demoiselle @ 22:54
Tags: , , , , ,

A maioria dos desenvolveres Java já se deparou com o seguinte erro: “java.lang.OutOfMemoryError: PermGen espace“. A máquina virtual Java possui uma área de memória chamada de Perm Generation, ou PermGen, este é um espaço de memória fora do heap onde são alocados objetos da própria VM, código de classes, objetos de reflexão, pool de strings, entre outros, geralmente, objetos cuja desalocação é rara.

Mas os problemas com estouro do PermGen são difíceis de diagnosticar justo porque não se trata de objetos do programa. Na maioria dos casos, está ligado a uma quantidade exagerada de classes que são carregadas na memória estourando o tamanho do PermGen.

Um exemplo clássico de problemas com PermGen é a execução do Eclipse com muitos plugins nas configurações padrões da JVM da Sun. Por causa da arquitetura de plugins bem organizada e encapsulada do Eclipse, muitas classes são carregadas na PermGen e a esta acabava transbordando. Um outro problema bem mais corriqueiro são os estouros do PermGen ao se fazer muitos redeploys nos servidores de aplicação.

Voltando para o ambiente padrão de desenvolvimento do Demoiselle e do Demoiselle-wzd, pontos críticos que podem ocasionar estouro de memória PermGen são: O próprio Eclipse, servidores de aplicações Web e a versão de teste do Eclipse com os plugins do Wizard. A solução para este problema é aumentar o espaço de memória reservado para o PermGen e a opção que faz esta alteração é -XX:MaxPermSize na inicialização da JVM. Exemplo:

java -XX:MaxPermSize=128m br.gov.demoiselle.InitClass

Neste caso, configuramos o tamanho máximo da memória de geração permanente para 128 megabytes,
sendo que o tamanho padrão é 64 megabytes.

No caso do nosso ambiente, para o Eclipse basta incluir (ou alterar) no arquivo eclipse.ini o comando para alterar o tamanho máximo da PermGen: -XX:MaxPermSize=512m. Para o servidor Web e o Eclipse de teste, deve-se alterar os argumentos da VM em “Run Configurations” ou “Debug Configurations” nas opções do próprio Eclipse.

Referências:

Solucionando o erro de Permgen Space

Gerenciamento de memória e garbage collector

Autor: Mario Costa

Tema: Rubric. Blog no WordPress.com.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 462 outros seguidores

%d bloggers like this: