2012-08-13 15 views
25

Voglio avviare un'istanza di tomcat7 incorporata direttamente da Maven utilizzando il plugin tomcat7-maven. Funziona bene, ma Tomcat non sembra avere abbastanza memoria. Ho il sospetto che avrei bisogno di impostareAumenta la memoria del plugin di tomcat7 maven?

-XX:MaxPermSize=256m 

ma non riesco a capire come farlo.

La documentazione dice che è necessario utilizzare l'elemento "systemProperties" nella sezione "configuration" del plug-in. Tuttavia, le opzioni sono specificate come elementi XML e avrebbe bisogno di guardare in quel modo:

<configuration> 
    <systemProperties> 
    <XX:MaxPermSize>256m</XX:MaxPermSize> 
    </systemProperties> 
</configuration> 

Ma questo è, naturalmente, non è possibile in quanto rompe l'XML (XX viene interpretato come uno spazio dei nomi).

Naturalmente potrei aggirare questo problema impostando variabile d'ambiente

MAVEN_OPTS=-XX:MaxPermSize=256m 

ma io preferirei di aumentare solo per la Tomcat incorporato. Qualche idea su come farlo?

risposta

2

è possibile impostare le proprietà in questo modo

<configuration> 
    <systemProperties> 
    <JAVA_OPTS>-Xms256m -Xmx512m -XX:MaxPermSize=256m</JAVA_OPTS> 
    </systemProperties> 
</configuration> 
+2

Molto bello, anche se non è affatto documentato :-) – Sebi

+11

Questo in realtà non ha funzionato affatto per me, e non me lo aspetterei. Il processo java è già avviato e sembra che [anche se si biforca, non si ottiene ancora un nuovo processo java] (http://mojo.10943.n7.nabble.com/How-to-set-user- fuso orario-entro-tomcat-maven-plugin-td36517.html). Quindi penso che devi impostare le dimensioni massime dell'heap prima di avviare Maven. Quando ho provato ad usare il tag per impostare la dimensione perm a 256, ho fatto un maven-pid jstat -gccapacity dopo aver avviato l'app e ho visto che il mio max perm gen era ancora solo 82 kb – rzrelyea

+18

aggiungendo questo a pom.xml non lavoro, è troppo tardi. È necessario passare tali parametri direttamente alla JVM, nella scheda Esegui -> Esegui configurazioni ...-> JRE -> Argomenti VM. È possibile verificare cosa sta succedendo con VisualVM (semplice profiler incorporato con Oracle JDK). –

13

Come la maggior parte ha detto nei commenti sopra le proprietà a pom.xml non ha effct. Che cosa ha funzionato per me stava tramontando miei MAVEN_OPTS

MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m" 

o Windows in un terminale: cmd

set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m 

Per gli utenti/linux mac, basta aggiungere una dichiarazione di esportazione al tuo ~/.profile (o simili nome del file). Ad esempio:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m" 

E riavviare il guscio.

+0

Ovviamente la proprietà Maven che ho menzionato nella mia risposta non sta cambiando la memoria per il processo Maven , ma per il processo Tomcat avviato da Maven. Questo è ciò che il poster originale ha chiesto: Come aumentare la memoria del plug-in di tomcat7 maven! – Sebi

+2

Il problema è che la tua soluzione _Sebi_ non * cambia * la memoria del processo di Tomcat avviato come _rzrelyea_ già indicato sopra, non viene avviato alcun processo Tomcat separato. –

+0

Fai attenzione se stai utilizzando un runner per test sicure "forking", potrebbe non rispettare MAVEN_OPTS ... http: //stackoverflow.com/questions/4066424/java-lang-outofmemoryerror-java-heap-space-in- maven – rogerdpack

0

Questo ha funzionato per me:

<plugin> 
    <groupId>org.codehaus.cargo</groupId> 
    <artifactId>cargo-maven2-plugin</artifactId> 
    <version>...</version> 
    <configuration> 
     <container>...</container> 
     <configuration> 
      <type>standalone</type> 
      <home>...</home> 
      <properties> 
       <cargo.jvmargs>-Xmx4096m</cargo.jvmargs> 
      </properties> 
     </configuration> 
     <deployables>...</deployables> 
    </configuration> 
</plugin> 

Si inizia il mio tomcat8 in una nuova JVM con l'argomento "-Xmx4096m".

+0

Questo è grande, tranne che non è una configurazione per il plugin tomcat7 che è una configurazione per il plugin cargo. –

Problemi correlati