Comment définir l'utilisation maximale de la mémoire de la JVM?
Je veux à la limite de la mémoire maximale utilisée par la JVM. Remarque, ce n'est pas seulement le tas, je veux limiter la quantité totale de mémoire utilisée par ce processus.
Vous devez vous connecter pour publier un commentaire.
utiliser les arguments
-Xms<memory>
-Xmx<memory>
. UtilisationM
ouG
après les chiffres pour indiquer les lignes directrices et les Concerts d'octets respectivement.-Xms
indique le minimum et-Xmx
le maximum.-Xmx524M
et le processus peut prendre jusqu'à 1,2 GO de RAM. (?)Vous ne devriez pas avoir à vous soucier de la pile de fuite de mémoire (c'est très rare). Le seul moment où vous pouvez avoir de la pile hors de contrôle est à l'infini (ou vraiment de profondeur) la récursivité.
C'est juste le tas. Désolé, il n'a pas lu votre question entièrement au premier abord.
Vous devez lancer la JVM avec la ligne de commande suivante argument.
Exemple:
Qui permettra à un maximum de 1 go de mémoire de la JVM.
-XX:MaxDirectMemorySize
. Non pas que j'ai fortement profilée pour s'assurer, mais encore 😉MaxDirectMemorySize
n'affecte NIO tampons. Toutes sortes d'autres natif de mémoire sont utilisés par la JVM.Si vous voulez limiter la mémoire de la jvm (pas la taille de segment de mémoire )
ulimit-v
Pour avoir une idée de la différence entre la jvm et la mémoire heap , jetez un oeil à cet excellent article
http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-java-process.html
ulimit
une commande Linux? J'ai fait une recherche rapide sur Google et ne vois pas de relation entreulimit
et la JVM. YLa réponse ci-dessus est une sorte de corriger, vous ne pouvez pas normalement contrôler la façon dont beaucoup de natifs de la mémoire d'un processus java alloue. Cela dépend de ce que votre demande est en train de faire.
Cela dit, en fonction de plate-forme, vous pourriez être en mesure de faire usage d'un mécanisme, ulimit par exemple, pour limiter la taille de java ou tout autre processus.
Juste ne pas s'attendre à l'échec normalement si il frappe de cette limite. Natif échecs d'allocation de mémoire sont beaucoup plus difficiles à manipuler que les échecs d'allocation sur le tas java. Il ya une assez bonne chance à l'application plante, mais en fonction de comment il est critique pour le système d'empêcher le processus de la taille vers le bas encore susceptibles de vous convenir.
Je n'ai jamais utilisé. Peut-être que vous le trouverez utile.