Augmenter la taille des tas en Java
je travaille sur un serveur Windows 2003 (64 bits) avec 8 Go de RAM. Comment augmenter la mémoire maximum? J'utilise le drapeau -Xmx1500m
pour augmenter la taille du tas à 1500 Mo. Puis-je augmenter la mémoire tas à 75% de la mémoire physique (6 Go tas)?
11 réponses
vous pouvez augmenter à 4 Go sur un système 32 bits. Si vous êtes sur un système 64 bits, vous pouvez aller plus haut. Pas besoin de vous inquiéter si vous avez choisi incorrectement, si vous demandez 5g sur un système de 32 bits java se plaindra d'une valeur invalide et quittera.
comme d'autres l'ont affiché, utilisez les drapeaux de ligne cmd-e.g.
java -Xmx6g myprogram
vous pouvez obtenir une liste complète (ou presque) en tapant java-X.
il est possible d'augmenter la taille des tas alloués par la JVM en utilisant les options de ligne de commande Ici, nous avons 3 options
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
-Xss<size> set java thread stack size
java -Xms16m -Xmx64m ClassName
dans la ligne ci-dessus nous pouvons fixer le minimum de tas à 16mb et le maximum de tas 64mb
sur un JVM de 32 bits, la plus grande taille de tas que vous pouvez théoriquement définir est de 4 Go. Pour utiliser une plus grande taille de tas, vous devez utiliser un 64-bit JVM. Essayez ce qui suit:
java-Xmx6144M-d64
le drapeau-d64 est important car il indique à la JVM de fonctionner en mode 64 bits.
il est possible d'augmenter la taille des tas alloués par la JVM dans eclipse directement In eclipse IDE goto
Exécuter---->Run Configurations---->Les Arguments
Entrez -Xmx1g(Il est utilisé pour définir la taille maximale comme Xmx256m ou Xmx1g...... m-->mo g--->go)
java-D64-Xms512m-Xmx4g HelloWorld
où, -d64: activera JVM 64 bits -Xms512m: définit la taille initiale du tas à 512 MB -Xmx4g: définit la taille maximale du tas à 4 Go (ici le nom du fichier java est : HelloWorld.java)
puis-je augmenter la mémoire de tas à 75% de mémoire physique (tas de 6 Go).
Oui, vous pouvez. En fait, vous pouvez augmenter de plus de la quantité de mémoire physique, si vous le souhaitez.
si c'est une bonne idée de faire cela dépend de combien d'autre fonctionne sur votre système. En particulier, si l '"ensemble de travail" des applications et des services qui sont actuellement en cours d'exécution dépasse de manière significative la mémoire, votre système est susceptible de "thrash", passer beaucoup de temps à déplacer les pages de mémoire virtuelle vers et à partir du disque. L'effet net est que le système est horriblement lent.
veuillez utiliser la commande ci-dessous pour changer la taille du tas en 6 Go
export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
vous pouvez augmenter la taille de tas en passant les paramètres JVM - Xms et - Xmx comme ci-dessous:
Pour Les Fichiers Jar:
java -jar -Xms4096M -Xmx6144M jarFilePath.jar
Pour Les Fichiers Java:
java -Xms4096M -Xmx6144M ClassName
les paramètres ci-dessus augmentent la initial Heapsize (- Xms) à 4GB (4096 MB) et MaxHeapSize (- Xmx) à 6GB (6144 MB).
mais, le jeune génération la taille du tas restera la même et la taille du tas supplémentaire sera ajoutée à la vieille génération Taille du tas. Pour égaliser la taille de jeune Gén tas et Vieux Gén tas , utilisez - 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 (vous pouvez jouer avec ce ratio pour obtenir votre ratio désiré).
cela ne fonctionne qu'avec la version 64 bits de Java. Allez dans le Panneau de configuration et cliquez sur L'icône Java. Sur la petite fenêtre du Panneau de configuration Java, cliquez sur la barre de menu Java, puis cliquez sur le bouton view
.
si vous avez deux plates-formes Java, désactivez la version précédente de Java, puis cliquez sur paramètres D'exécution champ de texte et écrivez -Xmx1024m
ou moins que la taille de la RAM. N'augmentez pas la taille de tas égale à RAM sinon votre système accident.
plusieurs personnes ont souligné les réponses spécifiques pour la taille du tas avec les options jvm de -Xms
et -Xms
. Je tiens à souligner que ce n'est pas le seul type d'options de mémoire de la jvm. Spécifiquement si vous obtenez des flux de pile, alors vous voudrez augmenter la taille de la pile en ajoutant une option supplémentaire comme -Xss8m
.
pour ce problème, les options jvm de quelque chose comme -Xms2g -Xmx6g -Xss8m
serait une solution.
je partage cette information car mes recherches sur google sur la façon d'augmenter la mémoire jvm m'ont amenée à cette solution, et les solutions ne fonctionnaient pas avec des quantités élevées d'allocation de mémoire. Une fois que j'ai compris à quoi servaient les paramètres spécifiques, j'ai pu chercher sur google comment augmenter la taille de la pile et trouver le param manquant. :) J'espère que cela permet d'économiser d'autres temps, il aurait du me sauve des tonnes de temps. :)
Oui. Vous Pouvez.
vous pouvez augmenter votre mémoire tas à 75% de la mémoire physique (6 Go tas) ou plus.
comme vous utilisez 64bit vous pouvez augmenter la taille de votre tas à votre quantité désirée. Dans le cas où vous utilisez 32bit, il est limité à 4GB.
$ java -Xms512m -Xmx6144m JavaApplication
vous fixe avec la taille initiale du tas à 512mb et la taille maximale du tas à 6 Go.
J'espère Aider.. :)