Come posso impostare la dimensione heap min e max di Java attraverso le variabili di ambiente?

StackOverflow https://stackoverflow.com/questions/417152

Domanda

Come posso impostare la dimensione heap min e max di Java attraverso le variabili di ambiente?

So che le dimensioni dell'heap possono essere impostate all'avvio di java, ma vorrei che questo fosse regolato tramite le variabili di ambiente sul mio server.

È stato utile?

Soluzione

Non puoi farlo usando direttamente le variabili di ambiente. Devi utilizzare l'insieme di "non standard" opzioni che vengono passate al comando java. Esegui: java -X per i dettagli. Le opzioni che stai cercando sono -Xmx e -Xms (questa è la dimensione heap "iniziale", quindi probabilmente quello che stai cercando.)

Alcuni prodotti come Ant o Tomcat potrebbero venire con uno script batch che cerca la variabile d'ambiente JAVA_OPTS, ma non fa parte del runtime Java. Se stai utilizzando uno di questi prodotti, potresti essere in grado di impostare la variabile come:

set JAVA_OPTS="-Xms128m -Xmx256m"  

Puoi anche adottare questo approccio con la tua riga di comando come:

set JAVA_OPTS="-Xms128m -Xmx256m"  
java ${JAVA_OPTS} MyClass

Altri suggerimenti

Se vuoi qualsiasi processo java , non solo ant o Tomcat, per raccogliere opzioni come -Xmx usa la variabile d'ambiente _JAVA_OPTIONS .

In bash: export _JAVA_OPTIONS = " -Xmx1g "

In realtà, esiste un modo per impostare i valori predefiniti globali per la JVM di Sun tramite variabili di ambiente.

Vedi Come impostare una proprietà di sistema java in modo che sia efficace ogni volta che avvio JVM senza aggiungerlo agli argomenti della riga di comando .

Non puoi farlo usando le variabili d'ambiente. Viene eseguito tramite " non standard " opzioni. Esegui: java -X per i dettagli. Le opzioni che stai cercando sono -Xmx e -Xms (questa è la dimensione heap "iniziale", quindi probabilmente quello che stai cercando.)

Penso che la tua unica opzione sia quella di avvolgere java in uno script che sostituisca le variabili di ambiente nella riga di comando

Un paio di note:

  1. La formica di Apache non sa nulla di JAVA_OPTS, mentre gli script di avvio di Tomcat lo sanno. Per la formica Apache, utilizzare ANT_OPTS per influenzare l'ambiente per la JVM che esegue / ant /, ma non per le cose che la formica potrebbe lanciare.

  2. La dimensione massima dell'heap che è possibile impostare dipende interamente dall'ambiente: per la maggior parte dei sistemi a 32 bit, la quantità massima di spazio heap che è possibile richiedere, indipendentemente dalla memoria disponibile, è compresa nell'intervallo 2GiB. L'heap più grande su un sistema a 64 bit è "veramente grande". Inoltre, sei praticamente limitato anche dalla memoria fisica, poiché l'heap è gestito dalla JVM e non vuoi che molti scambi avvengano sul disco.

  3. Per gli ambienti server, in genere si desidera impostare -Xms e -Xmx sullo stesso valore: questo risolverà la dimensione dell'heap a una certa dimensione e il garbage collector ha meno lavoro da fare perché l'heap non dovrà mai essere ridimensionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top