Pessoal,
Bom dia. Alguém sabe como eliminar esse tipo de erro em aplicações Java for Web(JSF) ?
Andei pesquisando na internet e fui sugerido a tentar o seguinte :
java -XX:MaxPermSize=128m pacote.MinhaClasse
para aumentar a área de memória de geração permanente, mas não acho que esta seja a solução mais indicada.
A minha aplicação está sendo desenvolvida usando arquitetura MVC, banco Oracle, ambiente de desenolvimento JSF + RichFaces e TopLink como camada de persitência.
Será que utilizar um SINGLETON em cada classe de controle para termos apenas um DAO instanciado seria uma boa idéia ?
Alguém poder me dar uma “luz no fim do túnel” ?
Agradece,
Max Carvalho
Poderia tentar utilizar a Máquina virtual da Oracle, JRockit…
O seu problema não está na jvm, está no seu software. Isso pode ser um leak consumindo espaço de memória. Dá uma olhada na jvisualvm. Essa ferramenta é ótima para otimizar software.
https://visualvm.dev.java.net/
Infelizmente essa é a unica solução existente no presente momento. Esse é um problema inerente dos servidores JEE.
A Oracle prometeu solucionar esse problema (no Glassfish 3.1 acho) mas por enquanto o máximo que você pode fazer é
aumentar o MaxPermSize e reiniciar o seu servidor esporadicamente. Se o problema está no seu servidor de produção,
então você deve estar cometendo o mesmo que é cometido aqui onde trabalho, implanta-se uma nova versão dos aplicativos,
as vezes, 4 ou 5 vezes ao dia. Especialmente para aplicativos grandes isso ferra com o seu servidor. Se possível, procure uma
data fixa para implantar novas versões no seu servidor e o reinicie logo em seguida.
Pessoal,
Configurei a VM do meu Tomcat em Run Configurations do Eclipse, da seguinte forma :
-Dcatalina.base="C:\UFPB\ProjetosDesenvolvimento\.metadata\.plugins\org.eclipse.wst.server.core\tmp0" -Dcatalina.home="C:\Info\apache-tomcat-6.0.20" -Dwtp.deploy="C:\UFPB\ProjetosDesenvolvimento\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps" -Djava.endorsed.dirs="C:\Info\apache-tomcat-6.0.20\endorsed"
-Xms256
-Xmx512
-XX:MaxPermSize=512
-XX:+CMSPermGenSweepingEnabled
E agora está aparecendo o seguinte erro :
Error occurred during initialization of VM
Too small initial heap
Alguém pode me ajudar ?
Agradece,
Max Carvalho
Você leu os tópicos que passei?
Aumentar o pemgen space geralmente só mascara o erro. Se você tiver um leak, ele cedo ou tarde estourará, independente do permgen configurado.