2013-02-06 16 views
20

Sto provando a impostare JAVA_OPTS per Tomcat su una macchina Windows, ma continuo a ricevere un errore se aggiungo più di una variabile.come impostare JAVA_OPTS per Tomcat in Windows?

Per esempio, questo funziona:

set JAVA_OPTS="-Xms512M" 

Ma questo non lo fa:

set JAVA_OPTS="-Xms512M -Xmx1024M" 

Esso genera l'errore:

Invalid initial heap size: -Xms512M -Xmx1024M 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit. 

E 'come se posso impostare una variabile (-Xmx funzionerà anche) ma non molti.

Sto utilizzando il file setenv.bat indicato e il mio Tomcat è 7.0.35.

risposta

23

A quanto pare la forma corretta è senza la ""

Come in

set JAVA_OPTS=-Xms512M -Xmx1024M 
7

Prova

set JAVA_OPTS=%JAVA_OPTS% -Xms512M -Xmx1024M 
20

Per Windows, nel caso in cui il valore della variabile, dispone di spazi (" ") in esso , il modo corretto è in realtà di mettere virgolette (") prima del nome della variabile come:

set "JAVA_OPTS=-Xms512M -Xmx1024M" 
6

mi piace una combinazione di Gaurav e di user2550946 di risposta migliore, ma vorrebbe aggiungere due ulteriori aspetti:

  1. Non utilizzare JAVA_OPTS, invece usare CATALINA_OPTS. Questo sarà usato esclusivamente per avviare tomcat, non per chiuderlo. In genere, quando si avvia tomcat si desidera più memoria, ma il processo di spegnimento (che si sposta appena, dice a Tomcat di spegnersi e quindi di terminare di nuovo) non richiede risorse appositamente ottimizzate. In effetti, l'arresto può anche fallire se una quantità ridicola di memoria non è più disponibile dal sistema operativo.

  2. Su sistemi di produzione, la mia raccomandazione è di richiedere immediatamente la memoria massima consentita. Perché se si anticipa che la memoria verrà richiesta prima o poi, non si vuole scoprire che non è disponibile alle 3 di notte - piuttosto quando si avvia il server. Pertanto, impostare -Xmx e -Xms allo stesso valore nei sistemi di produzione. (Questo rende il mio aspetto 1 ancora più rilevante)

Oppure, in una linea, ecco il mio consiglio:

set "CATALINA_OPTS=%CATALINA_OPTS% -Xms1024M -Xmx1024M" 
+0

è corretto CATALINA_OPTS set nel file setenv.bat? – pikimota

2

Si consiglia di creare un file chiamato setenv.bat e metterlo in la directory bin di Tomcat. Con questo file (che è gestito da catalina.bat e catalina.script sh), è possibile modificare le seguenti impostazioni di ambiente Tomcat con la variabile JAVA_OPTS:

È possibile impostare la dimensione massima heap memoria minima e con le

JVM -Xms e -Xmx parametri.

I limiti migliori dipendono da molte condizioni, ad esempio le trasformazioni eseguite da Integrator ETL. Per le trasformazioni di Information Discovery, si consiglia un massimo di 1 GB. Ad esempio, per impostare la dimensione heap minimo 128 MB e la dimensione massima heap 1024 MB, utilizzare

JAVA_OPTS=-Xms128m -Xmx1024m   

si deve impostare il limite massimo della PermGen (Generation permanente) spazio di memoria a una dimensione maggiore della predefinito. Il valore predefinito di 64 MB non è sufficiente per le applicazioni aziendali. Un limite di memoria adatto dipende da vari criteri, ma 256 MB potrebbero essere una buona scelta nella maggior parte dei casi. Se lo spazio PermGen massimo è troppo basso, OutOfMemoryError: possono verificarsi errori di spazio PermGen. È possibile impostare il limite massimo PermGen con il seguente parametro JVM

-XX:MaxPermSize=256m 

Per motivi di prestazioni, si raccomanda che l'applicazione viene eseguita in modalità server. Apache Tomcat non viene eseguito in modalità Server per impostazione predefinita. È possibile impostare la modalità Server utilizzando il parametro JVM -server. È possibile impostare il parametro JVM nella variabile JAVA_OPTS nella variabile di ambiente nel file setenv.

The following is an example of a setenv.bat file: 

set "JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx1024m -XX:MaxPermSize=256m -server" 
1

Questo perché, la quantità di memoria che si desidera assegnare per JVM non è disponibile o è possibile che si assegni più della memoria disponibile. Prova le dimensioni ridotte, quindi puoi vedere la differenza. Prova: set JAVA_OPTS = -Xms128m -Xmx512m -XX: PermSize = 128m

0
SET JAVA_HOME=C:\Applications\java\java_8 
SET PATH=%PATH%;C:\Applications\java\java_8\bin 
SET JAVA_OPTIONS=-d64 -Xms128g -Xmx128g 
Problemi correlati