Como é a sua definição de memória JVM 6 para JBoss AS 5?
Pergunta
Eu estou usando uma aplicação ICEFaces que corre ao longo JBOSS, meu atual heapsize está definido para
-Xms1024m -Xmx1024m XX: MaxPermSize = 256m
qual é a sua recomendação para ajustar os parâmetros de memória para JBoss AS 5 (5.0.1 GA) JVM 6?
Solução
De acordo com esta artigo :
AS 5 é conhecido por ser ganancioso quando se trata de PermGen . Ao iniciar, que muitas vezes joga
OutOfMemoryException: PermGen Error
.
Isto pode ser particularmente irritante durante o desenvolvimento quando você estiver implantando quente frequentemente uma aplicação. Neste caso, JBoss QA recomenda a aumentar o tamanho permgen, permitir que as classes descarga e varredura permgen :
-XX:PermSize=512m -XX:MaxPermSize=1024 -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
Mas isso é mais FYI, eu não estou sugerindo para aplicar esta configuração cegamente (como pessoas escreveram comentários, "se não está quebrado, não conserte").
Quanto à sua tamanho da pilha, tenha sempre em mente: Quanto maior a pilha, mais o grande GC . Agora, quando você diz "foi definitivamente muito pequeno", eu realmente não sei o que isso significa (o que erros, sintomas, etc). Para meu conhecimento, um monte 1024m é realmente muito grande para um webapp e deve realmente ser mais do que suficiente para a maioria deles. Só cuidado com a maior duração GC.
Outras dicas
Heap:. Comece com 512 MB, defina a tampa para onde você acredita que seu aplicativo nunca deve ficar, e não para fazer sua troca início do servidor
permgen: Isso é geralmente suficiente estável, uma vez que o aplicativo lê todas as classes usadas no aplicativo. Se você testou o aplicativo e funciona com 256 MB, em seguida, deixá-lo assim.
@wds: Definitivamente não é uma boa idéia para definir o máximo de heap mais alto possível por duas razões:
- Pilhas grandes de fazer pleno GC demorar mais tempo. Se você tem PermGen digitalização habilitado, um grande espaço PermGen levará mais tempo para GC também.
- JBoss AS no Linux pode deixar alças de E / S não utilizados abrir o suficiente para tornar o Linux limpá-los à força, bloqueando todos os processos na máquina até que seja concluído (pode demorar mais de 1 minuto!). Se você esquecer de desligar o scanner implantar quente, isso vai acontecer muito mais freqüência.
Isso aconteceria talvez uma vez por semana no meu aplicativo até que eu:
- diminuiu -Xms a um ponto onde a inicialização JBoss AS estava começando a desacelerar
- diminuiu -Xmx a um ponto onde GCs completos aconteceu com mais frequência, de modo que o Linux I / O identificador de limpeza parou
Para os desenvolvedores que eu acho que é bom para aumentar PermGen, mas na produção, você provavelmente vai querer usar apenas o que é necessário para evitar pausas do GC longos.