Perché Sun JVM non si inizializza quando imposto PermGen sopra 128M?
Domanda
Devo aumentare il mio PermGen. Attualmente passo i seguenti come parametri della riga di comando:
-XX: PermSize = 128m
XX: MaxPermSize = 128m
Funziona. Se provo ad aumentare i valori, tuttavia, la mia JVM non riesce a inizializzarsi, dandomi questo errore:
[2009-06-18 01:39:44] [info] Si è verificato un errore durante l'inizializzazione della VM
[2009-06-18 01:39:44] [info] Impossibile riservare spazio sufficiente per l'heap di oggetti
[2009-06-18 01:39:44] [informazioni]
[2009-06-18 01:39:44] [395 javajni.c] [errore] CreateJavaVM non riuscito
In particolare, sto cercando di avviare Tomcat nel JRE6 incluso, ma non credo che questo dovrebbe importare.
Modifica: sto eseguendo un'immagine VM Win2k3 con 2 GB di RAM. Avvio la JVM usando l'applicazione Monitor Tomcat con i seguenti parametri:
Pool di memoria iniziale: 1024 , pool di memoria massimo: 1536
-XX: PermSize = 128m
XX: MaxPermSize = 128m
-XX: + CMSPermGenSweepingEnabled
-XX: + CMSClassUnloadingEnabled
-XX: + UseConcMarkSweepGC
-Dcatalina.home = C: \ Programmi \ Apache Software Foundation \ Tomcat 6.0
-Dcatalina.base = C: \ Programmi \ Apache Software Foundation \ Tomcat 6.0
-Djava.endorsed.dirs = C: \ Programmi \ 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: \ Programmi \ Apache Software Foundation \ Tomcat 6.0 \ conf \ logging.properties
Soluzione
Perm Gen è additivo per Heap, quindi controlla i processi: dovrai avere più di 1,5 GB del tuo 2G disponibile.
Altri suggerimenti
Prova a dare un heap più grande con -Xmx512m (questo darà 512 MB)
Quali altri parametri di memoria usi? Quanta memoria c'è nella tua macchina? Sei su una macchina a 32 o 64 bit?
Ho 2 GB di memoria ed eseguo Tomcat con le impostazioni -Xmx1024m -XX: PermSize = 512m -XX: MaxPermSize = 512m. Questo di solito funziona bene.