Comment définir l'utilisation maximale de la mémoire pour JVM?


Je veux limiter la mémoire maximale utilisée par la JVM. Remarque, ce n'est pas seulement le tas, je veux limiter la mémoire totale utilisée par ce processus.

Author: erotsppa, 2009-09-29

5 answers

Utilisez les arguments -Xms<memory> -Xmx<memory>. Utilisez M ou G après les chiffres pour indiquer respectivement les Mégas et les Gigs d'octets. -Xms indique le minimum et -Xmx le maximum.

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

Vous ne devriez pas avoir à vous soucier de la fuite de mémoire de la pile (c'est très rare). La seule fois où vous pouvez avoir la pile hors de contrôle est avec une récursivité infinie (ou vraiment profonde).

C'est juste le tas. Désolé, je n'ai pas lu complètement votre question au début.

Vous devez exécuter la JVM avec l'argument de ligne de commande suivant.

-Xmx<ammount of memory>

Exemple:

-Xmx1024m

Qui permettra un maximum de 1 Go de mémoire pour la JVM.

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

Si vous voulez limiter la mémoire pour la jvm (pas la taille du tas ) ulimit-v

Pour avoir une idée de la différence entre la jvm et la mémoire de tas , jetez un oeil à cet excellent article 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 réponse ci-dessus est plutôt correcte, vous ne pouvez pas contrôler gracieusement la quantité de mémoire native allouée par un processus java. Cela dépend de ce que fait votre application.

Cela dit, selon la plate-forme, vous pourrez peut-être utiliser un mécanisme, ulimit par exemple, pour limiter la taille d'un java ou de tout autre processus.

Ne vous attendez pas à ce qu'il échoue gracieusement s'il atteint cette limite. Les échecs d'allocation de mémoire native sont beaucoup plus difficiles à gérer que les échecs d'allocation sur java tas. Il y a une assez bonne chance que l'application se bloque, mais en fonction de l'importance pour le système de réduire la taille du processus qui pourrait toujours vous convenir.

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

Le NativeHeap peut être augmenté de-XX: MaxDirectMemorySize=256M (la valeur par défaut est 128)

Je n'ai jamais utilisé. Peut-être que vous le trouverez utile.

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