Come impostare l'utilizzo massimo della memoria per JVM?


Voglio limitare la memoria massima utilizzata dalla JVM. Nota, questo non è solo l'heap, voglio limitare la memoria totale utilizzata da questo processo.

Author: erotsppa, 2009-09-29

5 answers

Usa gli argomenti -Xms<memory> -Xmx<memory>. Usa M o G dopo i numeri per indicare rispettivamente Meg e Giga di byte. -Xms indica il minimo e -Xmx il massimo.

 91
Author: Ram, 2014-02-27 15:23:22

Non dovresti preoccuparti della perdita di memoria dello stack (è molto raro). L'unica volta che puoi avere lo stack fuori controllo è con una ricorsione infinita (o molto profonda).

Questo è solo il mucchio. Scusa, non ho letto completamente la tua domanda all'inizio.

È necessario eseguire la JVM con il seguente argomento della riga di comando.

-Xmx<ammount of memory>

Esempio:

-Xmx1024m

Ciò consentirà un massimo di 1 GB di memoria per la JVM.

 28
Author: jjnguy, 2009-09-29 18:38:02

Se si desidera limitare la memoria per jvm (non la dimensione dell'heap ) ulimit-v

Per avere un'idea della differenza tra jvm e memoria heap, dai un'occhiata a questo eccellente articolo http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-java-process.html

 11
Author: vsingh, 2013-01-31 21:28:27

La risposta sopra è corretta, non è possibile controllare con garbo la quantità di memoria nativa allocata da un processo java. Dipende da cosa sta facendo la tua applicazione.

Detto questo, a seconda della piattaforma, potresti essere in grado di utilizzare alcuni meccanismi, ulimit ad esempio, per limitare le dimensioni di un java o di qualsiasi altro processo.

Non aspettarti che fallisca con grazia se raggiunge quel limite. Gli errori di allocazione della memoria nativa sono molto più difficili da gestire rispetto agli errori di allocazione su java mucchio. C'è una buona probabilità che l'applicazione si blocchi, ma a seconda di quanto sia fondamentale per il sistema mantenere le dimensioni del processo ridotte che potrebbero ancora essere adatte a te.

 9
Author: SmoothieMonster, 2009-09-29 19:47:18

Il NativeHeap può essere aumentato di-XX: MaxDirectMemorySize=256M (il valore predefinito è 128)

Non l'ho mai usato. Forse lo troverai utile.

 1
Author: Mario Trucco, 2017-07-19 14:14:28