Question

Nous pouvons utiliser des arguments JVM pour limiter la mémoire allouée pour le tas JVM, etc.

Je voudrais savoir si nous pouvons coder en dur ces valeurs dans le programme Java pendant le temps de développement, au lieu d'ajouter des arguments JVM dans la ligne de commande lorsque nous exécutons le programme. Est-il possible?

Était-ce utile?

La solution

Ma première question devrait être, pourquoi la définissez-vous du tout? Le serveur JVM définit le maximum à 1/4 de la taille de la mémoire principale et cela est raisonnable pour la plupart des applications. Vous pouvez changer cela en construisant votre propre JVM ou vous pouvez créer un alias comme

alias java="java -Xmx30g"

Ce que vous pouvez faire, c'est vérifier périodiquement l'utilisation de la mémoire et tuer le processus si vous en utilisez plus. C'est une très mauvaise idée bien sûr.

Au lieu de cela, ce que vous pouvez faire est d'exécuter à nouveau le programme avec les mêmes arguments mais avec la taille maximale du tas que vous souhaitez. C'est-à-dire que vous pouvez runtime.exec.

Vous ne pouvez pas le changer car il réserve la taille maximale de la mémoire au démarrage.

BTW, il y a une idée fausse commune selon laquelle le tas est la seule mémoire qui compte. Ce n'est pas vrai comme le JVM, les piles de threads, la mémoire native, etc. utilisent toutes de la mémoire afin que vous puissiez être le tas de 100 Mo, mais le JVM pourrait utiliser 300 Mo.

Autres conseils

Essayez-vous de changer la taille du tas à l'exécution? Vous ne pouvez pas le faire car la valeur de taille du tas doit être définie lorsque JVM démarre et ne peut pas changer.

Non, vous ne pouvez pas faire ça. Tout ce que vous pouvez faire est d'ajouter un argument à la ligne de commande pour gérer la taille du tas.

Une solution sale peut être d'apparaître un autre processus avec une taille de tas différente, mais je ne pense pas que ce soit ce que vous recherchez. Ici il y en a un exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top