Le réglage de la taille du tas Java ne fonctionne pas avec une machine 64 Bits de 256 Go de RAM


, j'ai essayé de trouver la réponse à cela, mais je ne pouvais toujours pas.

J'ai une machine 64 bits avec 256 Go de RAM.

J'essaie d'exécuter un programme Java qui lie à MySQL. Et il a besoin d'une grande taille de tas silencieuse car lorsque j'ai utilisé l'argument VM -Xmx1024m après quelques minutes, cela apparaît:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

Mais, quand j'ai essayé de définir l'argument program VM par -Xmx2048m ou plus, cela ne fonctionne pas et a dit:

Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

J'ai lu que le réglage -Xmx2048 n'est pas un problème pour Machine 64 bits, mais je ne sais vraiment pas pourquoi il ne fonctionne pas sur ma machine.

java -version sortie: entrez la description de l'image ici

Wmic OS get FreePhysicalMemory /Valeur sortie:

FreePhysicalMemory=251663664

Wmic computersystem obtenir TotalPhysicalMemory sortie:

TotalPhysicalMemory
274811621376

Wmic os obtenir osarchitecture sortie

OSArchitecture
64-bit

Je ne pouvais pas exécuter systeminfo|find "Memory" car il dit une mauvaise syntaxe. Je ne sais pas pourquoi non plus.

Author: fuschia, 2015-02-03

2 answers

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

Ce message implique que le tas java n'a pas assez d'espace pour effectuer une allocation supplémentaire. Il semble que vous ayez défini 1G de Xmx ce qui est insuffisant pour votre application sinon, l'application peut fuir la mémoire qui occupe de l'espace dans le tas java.

Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

Pendant l'initialisation de la machine virtuelle. JVM effectue divers init directement du tas aux modules JIT. Le tas Java est un espace continiuos tout en faisant l'initialisation si la JVM n'a pas pu trouver le espace mémoire contigu pour le Xmx demandé puis ci dessus message d'erreur sera levée.

Il s'agit d'une allocation de mémoire virtuelle, veuillez donc ne pas confondre avec les valeurs de mémoire physique

Veuillez exécuter la commande java -verbose:init -Xmx2048 -version

Cette commande indiquera les étapes subies par la JVM lors de l'initialisation et pendant quelle étape elle a échoué.

 1
Author: Mohan Raj, 2015-04-17 08:55:21

Envisagez d'exécuter votre application en tant qu'administrateur - lancez simplement la console PowerShell via un clic droit -> Exécuter en tant qu'administrateur.

Windows peut refuser d'accorder beaucoup de mémoire à un seul processus qui n'est pas élevé.

Aussi-utilisez-vous Windows Server ou une version de poste de travail de Windows? Il est généralement recommandé d'utiliser Windows Server pour de tels "gros" services.

 0
Author: vap78, 2015-02-03 09:24:59