2012-07-05 17 views
60

Ho questa macchina virtuale con tomcat, java e grails al suo interno. Sono stato sempre PermGen errori così mi sono guardato intorno e ho trovato la soluzione:Come imposto correttamente la dimensione permgen?

set JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" 

Io uso di SSH per accedere al vm e digitare gli argomenti di cui sopra. Suppongo che risolverebbe il problema. Il fatto è che volevo essere sicuro di averlo fatto correttamente. Così ho cercato ancora una volta su come ho potuto verificare la PermSize attuale e questa è la soluzione che ho ottenuto:

jinfo -flag MaxPermSize 6444 

6444 è il pid, e come risposta, ho ottenuto questo.

-XX:MaxPermSize=85983232 

Domanda: il valore di maxPermSize è espresso in byte? perché, se lo è, questo significherebbe che il comando java_opts non ha funzionato. Mi aspetto di ottenere 512 milioni ma 85983232 byte = 82 MB. O lo vedo male ...? Qualcuno può illuminarmi su questo? D:

+0

Presumo riavviato il processo di Tomcat? Con ps -wwf 6444 è possibile visualizzare il comando completo che ha avviato il processo. Verifica che le tue opzioni siano incluse. Puoi anche avviare jconsole (incluso in jdk) e collegarti al processo, quindi controllare la scheda Informazioni generali e la scheda Memoria. – greyfairer

+0

Non ho riavviato tomcat. Penso di aver dimenticato quel processo .. D: Scusate, sono un po 'nuovo per questa cosa di distribuzione .. Ma suppongo che come sviluppatore dovrei sapere questo tipo di cose .. Grazie. :) –

risposta

74

dovete cambiare i valori nelle CATALINA_OPTS opzione definita nel Tomcat Catalina file di avvio. Per aumentare la memoria PermGen, modificare il valore della variabile MaxPermSize, altrimenti modificare il valore della variabile Xmx.

Linux & Mac OS: Aprire o creare setenv.sh file inserito nella directory "bin". Si deve applicare le modifiche a questa linea:

export CATALINA_OPTS="$CATALINA_OPTS -server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" 

di Windows:

Aprire o creare il file setenv.bat inserito nella directory "bin":

set CATALINA_OPTS=-server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m 
+51

In realtà il modo consigliato per impostarlo è creare un setenv.bat (Windows) o setenv.sh (* nix) e inserendo le voci lì dentro, Tomcat le raccoglierà e sarà più facile gestire un aggiornamento. – Steve

+0

Ci sono molte risposte simili in giro ma ho trovato che questo era il più chiaro e semplice, molto utile. – Jeremy

+1

Perché cambiare Xmx aumentare PermGen? – amdev

1

Quindi stai facendo la cosa giusta riguardo a "-XX: MaxPermSize = 512m": è davvero la sintassi corretta. Si potrebbe provare a impostare queste opzioni direttamente sui file del server Catalyna in modo che vengano utilizzate all'avvio del server.

Forse questo post ti aiuterà!

How to make sure that Tomcat6 reads CATALINA_OPTS on Windows?

+0

Sto usando linux. Ma leggerò questo e vedrò come funziona. grazie mille per aver risposto. : 3 –

21

Non mettere la configurazione dell'ambiente in catalina.bat/catalina.sh. Invece dovresti creare un nuovo file in CATALINA_BASE \ bin \ setenv.bat per mantenere le tue personalizzazioni separate dall'installazione di tomcat.

+0

Ho inviato una modifica per aggiungerla alla risposta accettata. –

0

completamente rimosso dal Java 8 +
parzialmente rimosso da Java 7 (internati Corde per esempio)
source

Problemi correlati