Por que o meu Sun JVM falhar ao inicializar quando eu definir PermGen acima de 128M?
Pergunta
Eu preciso aumentar meu PermGen. Atualmente eu passar o seguinte como parâmetros de linha de comando:
-XX:PermSize=128m
-XX:MaxPermSize=128m
Isso funciona. Se eu tentar aumentar os valores, no entanto, a minha JVM falhar para inicializar, dando-me este erro:
[2009-06-18 01:39:44] [info] Error occurred during initialization of VM
[2009-06-18 01:39:44] [info] Could not reserve enough space for object heap
[2009-06-18 01:39:44] [info]
[2009-06-18 01:39:44] [395 javajni.c] [error] CreateJavaVM Failed
Especificamente, eu estou tentando arrancar Tomcat na incluído jre6 , mas eu não acho que isso deveria importar.
Editar: eu estou correndo imagem Win2k3 VM com 2GB de RAM. Eu iniciar o JVM usando o Monitor de Tomcat aplicativo com os seguintes parâmetros:
pool de memória inicial: 1024 , piscina máxima de memória: 1536
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC
-Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 6.0
-Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 6.0
-Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 6.0\endorsed
-Djava.io.tmpdir=E:\tomcat\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\logging.properties
Solução
Perm Gen é aditivo para Heap, de modo a verificar os processos - você vai precisar de ter 1.5+ GB do seu 2G disponível
.Outras dicas
Tente dar-lhe um montão maior com -Xmx512m (isso vai dar 512 MB)
O que outros parâmetros de memória que você usa? Quanta memória está lá na sua máquina? Você está em uma máquina de 32-bit ou 64-bit?
Eu tenho 2 GB de memória e eu corro tomcat com configurações -Xmx1024m XX: PermSize = 512m XX: MaxPermSize = 512m. Isso geralmente funciona muito bem.