web-dev-qa-db-fra.com

Augmenter la taille du tas dans Java

Je travaille sur un serveur Windows 2003 (64 bits) avec 8 Go de RAM. Comment puis-je augmenter le maximum de mémoire de tas? J'utilise l'indicateur -Xmx1500m pour augmenter la taille du segment de mémoire à 1500 Mo. Puis-je augmenter la mémoire de tas à 75% de la mémoire physique (6 Go)?

257
Sunil

Vous pouvez augmenter à 4 Go sur un système 32 bits. Si vous utilisez un système 64 bits, vous pouvez aller plus haut. Inutile de vous inquiéter si vous avez fait le mauvais choix. Si vous demandez 5g sur un système 32 bits, Java se plaindra d'une valeur non valide et quittera.

Comme d'autres l'ont déjà signalé, utilisez les drapeaux cmd-line - par exemple.

Java -Xmx6g myprogram

Vous pouvez obtenir une liste complète (ou une liste presque complète, en tout cas) en tapant Java -X.

308
Steve B.

Il est possible d'augmenter la taille de segment allouée par la machine virtuelle à l'aide des options de ligne de commande. Trois options sont disponibles.

-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 définir un minimum de tas de 16 Mo et maximum de 64 Mo.

151
Karthik Reddy

Sur une machine virtuelle Java 32 bits, la taille de segment la plus grande que vous pouvez théoriquement définir est de 4 Go. Pour utiliser une taille de segment supérieure, vous devez utiliser une machine virtuelle Java 64 bits. Essayez ce qui suit:

Java -Xmx6144M -d64

L'option -d64 est importante car elle indique à la machine virtuelle Java de s'exécuter en mode 64 bits.

27
Kevin

Il est possible d’augmenter directement la taille de segment allouée par la machine virtuelle Java dans Eclipse. Dans Eclipse IDE goto

Exécuter ----> Exécuter les configurations ----> Arguments

Entrez -Xmx1g (il est utilisé pour définir la taille maximale telle que Xmx256m ou Xmx1g ...... m -> mb g ---> gb)

11
Karthik Reddy

Java -d64 -Xms512m -Xmx4g HelloWorld

où, -d64: activera la JVM 64 bits -Xms512m: définira la taille de segment de mémoire initiale sur 512 Mo -Xmx4g: définira la taille de segment de mémoire maximale sur 4 Go (ici, le nom du fichier Java est: HelloWorld.Java)

10
Sumit Deshinge

Puis-je augmenter la mémoire de tas à 75% de la mémoire physique (6 Go).

Oui, vous pouvez. En fait, vous pouvez augmenter votre mémoire au-delà de la quantité de mémoire physique si vous le souhaitez.

Que ce soit une bonne idée ou non, cela dépend de la quantité de ressources restante sur votre système. En particulier, si le "groupe de travail" des applications et des services en cours d'exécution dépasse de manière significative la mémoire physique disponible, votre système est susceptible de "trembler" et de passer beaucoup de temps à déplacer des pages de mémoire virtuelle vers et depuis un disque. Le résultat net est que le système devient terriblement lent.

7
Stephen C

Vous pouvez augmenter la taille du tas en passant les paramètres de la machine virtuelle Java - 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 les valeurs InitialHeapSize (-Xms) à 4 Go (4096 Mo) et MaxHeapSize (-Xmx) à 6 Go (6144 Mo).

Mais, la taille du tas jeune génération restera la même et la taille supplémentaire du tas sera ajoutée à la taille du tas ancienne génération. Pour égaliser la taille de Young Gen Heap et Old Gen Heap, utilisez - XX: NewRatio = 1 -XX: -UseAdaptiveSizePolicy params.

Java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar

- - XX: NewRatio = Old Gen Taille du tas: Young Gen HeapSize (Vous pouvez jouer avec ce ratio pour obtenir le ratio souhaité).

4
Sahil Chhabra

Cela ne fonctionne qu'avec la version 64 bits de Java. Allez au Panneau de configuration et cliquez sur l'icône Java. Dans 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 le champ paramètres d'exécution et écrivez -Xmx1024m ou une valeur inférieure à RAM. _ Taille. N'augmentez pas la taille du tas égale à RAM car votre système se planterait.

2
madhu

Veuillez utiliser la commande ci-dessous pour modifier la taille du segment de mémoire en 6 Go

export Java_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
2
user7389761

Plusieurs personnes ont souligné les réponses spécifiques à la taille de 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 pour le JVM. Plus précisément, si vous obtenez une pile sur des flux, vous voudrez augmenter la taille de la pile en ajoutant une option supplémentaire telle que -Xss8m.

Pour ce problème, les options jvm de quelque chose comme -Xms2g -Xmx6g -Xss8m seraient une solution.

Je partage cette information alors que mes recherches google sur la façon d’accroître la mémoire JVM me conduisaient à cette solution, qui ne fonctionnait pas avec une grande quantité d’allocation de mémoire. Une fois que j’ai compris l’utilité des paramètres, j’ai pu trouver une méthode pour augmenter la taille de la pile et trouver le paramètre manquant. :) J'espère que cela fera gagner du temps aux autres, car cela me permettrait de gagner beaucoup de temps. :)

1
James Oravec

Oui. Vous pouvez.

Vous pouvez augmenter votre mémoire de tas jusqu'à 75% de la mémoire physique (6 Go) ou plus.

Puisque vous utilisez 64 bits, vous pouvez augmenter la taille de votre tas au montant souhaité. Dans le cas où vous utilisez 32 bits, il est limité à 4 Go.

$ Java -Xms512m -Xmx6144m JavaApplication

Définit la taille de segment initiale sur 512 Mo et la taille maximale de segment sur 6 Go.

J'espère que ça aide.. :)

0
Sarat Chandra