Eu estava utilizando o Eclipse JEE (64 bits) + JDK6(64) + TomCat6. Após alguns minutos editando algum arquivo no eclipse ou mesmo tentando executar a aplicação, o seguinte erro era gerado e meu eclipse travava:
java.lang.OutOfMemoryError: PermGen space
Exception in thread "Timer-2" java.lang.OutOfMemoryError: PermGen space
Este erro pode ocorrer devido aos recursos que são utilizados pela aplicação, e que estouram o limite de memória definido pela JVM para armazenar recursos como classes e métodos que são carregados durante a execução de um programa em JAVA. Esta limitação está associada ao conceito de Permanent Generation da JVM. Abaixo segue a definição do Permanent Generation segundo a própria sun:
The permanent generation is special because it holds data needed by the virtual machine to describe objects that do not have an equivalence at the Java language level. For example objects describing classes and methods are stored in the permanent generation.
Porém esta limitação não é fixa e pode ser alterada durante a execução dos programas através de opções passadas para à JVM. A opção a ser alterada neste caso é a opção XX:MaxPermSize=512m.
Porém como estamos falando da execução do eclipse com os recursos necessários para uma aplicação web, para passar estas opções para o mesmo, basta editar o arquivo eclipse.ini no root do eclipse. Adicione as opções abaixo:
-Xms128m
-Xmx1024m
-XX:MaxPermSize=512m
Agora inicie o eclipse novamente e assim como no meu caso, deverá funcionar.
Mais detalhes sobre Generations e Permanent Generations podem ser encontrados no link abaixo:
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
Referências:
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
Nenhum comentário:
Postar um comentário