J'ai besoin d'exécuter une application gourmande en mémoire Java qui utilise plus de 2 Go, mais j'ai des problèmes pour augmenter la taille maximale du tas. Jusqu'à présent, j'ai essayé les approches suivantes:
Réglage du paramètre -Xmx, par exemple -Xmx3000m. Cette approche échoue lors de la création de la JVM. D'après ce que j'ai recherché sur Google, il semble que -Xmx doit être inférieur à 2 Go.
Utilisation de l' option -XX: + AggressiveHeap . Lorsque j'essaie cette approche, j'obtiens une erreur «Mémoire insuffisante» qui indique que la taille du tas est de 1273,4 Mo, même si mon ordinateur dispose de 8 Go de mémoire.
Existe-t-il une autre approche que je peux essayer d'augmenter la taille maximale du tas de la JVM? Voici un résumé des spécifications de l'ordinateur:
- Système d'exploitation: Windows 7 (64 bits)
- Processeur: Intel Core i7 (2,66 GHz)
- Mémoire: 8 Go
- java -version:
java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
la source
Réponses:
Procurez-vous une JVM 64 bits d' Oracle .
la source
Lorsque vous utilisez JVM en mode 32 bits, la taille maximale du segment de mémoire pouvant être allouée est de 1280 Mo. Donc, si vous voulez aller au-delà de cela, vous devez appeler JVM en mode 64.
Vous pouvez utiliser les éléments suivants:
où,
Vous pouvez régler -Xms et -Xmx selon vos besoins (YMMV)
Une très bonne ressource sur le réglage des performances JVM, qui pourrait vouloir se pencher sur: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html
la source
Je crois que la limite de 2 Go est pour Java 32 bits. Je pensais que la v1.6 était toujours 64 bits, mais essayez de forcer le mode 64 bits juste pour voir: ajoutez l'option -d64.
la source
Java 32 bits est limité à environ 1,4 à 1,6 Go.
FAQ sur le tas Oracle 32 bits
Citation
La limite de tas théorique maximale pour la JVM 32 bits est 4G. En raison de diverses contraintes supplémentaires telles que la permutation disponible, l'utilisation de l'espace d'adressage du noyau, la fragmentation de la mémoire et la surcharge de la machine virtuelle, en pratique, la limite peut être beaucoup plus faible. Sur la plupart des systèmes Windows 32 bits modernes, la taille maximale du tas varie de 1,4G à 1,6G. Sur les noyaux Solaris 32 bits, l'espace d'adressage est limité à 2G. Sur les systèmes d'exploitation 64 bits exécutant la machine virtuelle 32 bits, la taille maximale du tas peut être plus élevée, approchant la 4G sur de nombreux systèmes Solaris.
la source
La configuration ci-dessous fonctionne pour moi:
la source