Aumentare la dimensione dell’heap in Java

Sto lavorando su un server Windows 2003 (64 bit) con 8 GB di RAM. Come posso aumentare la memoria heap al massimo? Sto usando il flag -Xmx1500m per aumentare la dimensione dell’heap a 1500 Mb. Posso aumentare la memoria heap fino al 75% della memoria fisica (6 GB di heap)?

È ansible aumentare fino a 4 GB su un sistema a 32 bit. Se sei su un sistema a 64 bit puoi andare più in alto. Non c’è bisogno di preoccuparsi se hai scelto in modo errato, se richiedi 5g su un sistema a 32 bit, java si lamenterà di un valore non valido e uscirà.

Come altri hanno pubblicato, usa i flag della cmd-line – es

 java -Xmx6g myprogram 

È ansible ottenere una lista completa (o una lista quasi completa, comunque) digitando java -X.

È ansible aumentare le dimensioni dell’heap allocate da JVM utilizzando le opzioni della riga di comando. Qui abbiamo 3 opzioni

 -Xms set initial Java heap size -Xmx set maximum Java heap size -Xss set java thread stack size java -Xms16m -Xmx64m ClassName 

Nella riga precedente possiamo impostare un heap minimo su 16mb e un massimo su heap 64mb

Su una JVM a 32 bit, la dimensione massima dell’heap che è ansible impostare teoricamente è 4 GB. Per utilizzare una dimensione heap maggiore, è necessario utilizzare una JVM a 64 bit. Prova quanto segue:

java -Xmx6144M -d64

Il flag -d64 è importante in quanto indica alla JVM di funzionare in modalità 64 bit.

È ansible aumentare la dimensione heap allocata dalla JVM in eclipse direttamente in eclipse IDE goto

Esegui —-> Esegui configurazioni —-> Argomenti

Enter -Xmx1g (È usato per impostare la dimensione massima come Xmx256m o Xmx1g …… m -> mb g —> gb)

java -d64 -Xms512m -Xmx4g HelloWorld

dove, -d64: abiliterà JVM a 64 bit -Xms512m: imposterà la dimensione dell’heap iniziale come 512 MB -Xmx4g: imposterà la dimensione massima dell’heap come 4 GB (qui il nome del file java è: HelloWorld.java)

Posso aumentare la memoria heap fino al 75% della memoria fisica (6GB Heap).

Si, puoi. In effetti, puoi aumentare a più della quantità di memoria fisica, se lo desideri.

Se è una buona idea farlo dipende da quanto altro è in esecuzione sul tuo sistema. In particolare, se il “working set” delle applicazioni e dei servizi attualmente in esecuzione supera in modo significativo la memoria fisica disponibile, il sistema è sobject a “thrash”, impiegando molto tempo a spostare le pagine di memoria virtuale da e verso il disco. L’effetto netto è che il sistema diventa orribilmente lento.

Utilizzare il comando riportato di seguito per modificare la dimensione dell’heap su 6 GB

 export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m" 

Puoi aumentare la dimensione dell’heap passando i parametri JVM -Xms e -Xmx come di seguito:

Per i file Jar:

 java -jar -Xms4096M -Xmx6144M jarFilePath.jar 

Per i file Java:

  java -Xms4096M -Xmx6144M ClassName 

I parametri precedenti aumentano InitialHeapSize (-Xms) a 4 GB (4096 MB) e MaxHeapSize (-Xmx) a 6 GB (6144 MB).

Tuttavia, la dimensione heap di Young Generation rimarrà invariata e l’HeapSize aggiuntivo verrà aggiunto alla dimensione heap di vecchia generazione . Per equalizzare le dimensioni di Young Gen Heap e Old Gen Heap , utilizzare -XX: NewRatio = 1 -XX: -UseAdaptiveSizePolicy params.

 java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar 

-XX: NewRatio = Old Gen Heap Size: Young Gen HeapSize (puoi giocare con questo rapporto per ottenere il rapporto desiderato).

Funziona solo con la versione a 64 bit di Java. Vai a Pannello di controllo e fare clic sull’icona Java. Nella piccola finestra di Java Control Panel, fare clic sulla barra dei menu di Java e quindi fare clic sul pulsante di view .

Se si dispone di due piattaforms Java, disabilitare la versione precedente di Java, quindi fare clic sul campo di testo dei parametri Runtime e scrivere -Xmx1024m o meno della dimensione della RAM. Non aumentare la dimensione dell’heap uguale alla RAM altrimenti il ​​sistema si bloccherà.

Diverse persone hanno indicato le risposte specifiche per la dimensione dell’heap con le opzioni jvm di -Xms e -Xms . Voglio sottolineare che questo non è l’unico tipo di opzioni di memoria per il jvm. Specificamente, se si ottiene uno stack sui flussi, si vorrà aumentare la dimensione dello stack aggiungendo un’opzione aggiuntiva come -Xss8m .

Per questo problema, le opzioni jvm di qualcosa come -Xms2g -Xmx6g -Xss8m sarebbero una soluzione.

Condivido queste informazioni mentre le mie ricerche su google su come aumentare la memoria jvm mi hanno portato a questa soluzione e le soluzioni non hanno funzionato con un’elevata quantità di allocazione di memoria. Una volta capito quali fossero le impostazioni specifiche, sono riuscito a Google come aumentare le dimensioni dello stack e ho trovato il parametro mancante. 🙂 Spero che questo faccia risparmiare tempo agli altri, come mi avrebbe risparmiato un sacco di tempo. 🙂

Sì. Puoi.

È ansible aumentare la memoria heap fino al 75% della memoria fisica (6 GB Heap) o superiore.

Dal momento che stai usando 64 bit puoi aumentare la dimensione dell’heap alla quantità desiderata. Nel caso in cui si utilizza 32 bit è limitato a 4 GB.

 $ java -Xms512m -Xmx6144m JavaApplication 

Imposta la dimensione dell’heap iniziale su 512mb e la dimensione massima heap su 6 GB.

Spero che sia d’aiuto.. 🙂