Impossible de réserver suffisamment d’espace pour le tas d’objects

Lorsque je cours, j’obtiens l’exception suivante à chaque fois que je tente d’exécuter le programme.

Une erreur s’est produite lors de l’initialisation de la machine virtuelle

Impossible de réserver suffisamment d’espace pour le tas d’objects

N’a pas pu créer la machine virtuelle Java.

J’ai essayé d’augmenter ma mémoire virtuelle (taille de la page) et ma taille de la RAM, mais en vain. Quelqu’un peut-il me dire comment puis-je éliminer cette erreur?

Exécutez la JVM avec -XX:MaxHeapSize=512m (ou un grand nombre) (ou -Xmx512m en abrégé)

Cela peut également être causé par la définition de quelque chose de trop grand sur un HotSpot vm 32 bits, par exemple:

 -Xms1536m -Xmx1536m 

où cela pourrait / pourrait fonctionner:

 -Xms1336m -Xmx1336m 

Je me suis heurté à cela lors de l’utilisation de javac, et il ne semble pas que les options de la ligne de commande

 -bash-3.2$ javac -Xmx256M HelloWorldApp.java Error occurred during initialization of VM Could not reserve enough space for object heap Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 

donc la solution ici c’est donc _JAVA_OPTIONS

 -bash-3.2$ export _JAVA_OPTIONS="-Xmx256M" -bash-3.2$ javac HelloWorldApp.java Picked up _JAVA_OPTIONS: -Xmx256M 

Et cela comstack bien.

Cela m’arrive sur des machines avec beaucoup de RAM, mais avec des ulimits de mémoire plus faibles. Java décide d’allouer un gros tas car il détecte le RAM dans la machine, mais il n’est pas autorisé à l’allouer à cause des ulimits.

voici comment le réparer:

  • Allez dans Démarrer-> Panneau de configuration-> Système-> Avancé (onglet) -> Variables d’environnement-> Système

Variables-> Nouveau: Nom de la variable: _JAVA_OPTIONS

Valeur variable: -Xmx512M

Nom de la variable: Path
Valeur de la variable: %PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;

Changez ceci en votre chemin approprié.

Combiné avec -Xmx512M, utilisez -d64 pour vous assurer que vous exécutez une machine virtuelle 64 bits. Sur une machine 64 bits, je pensais que j’exécutais une machine virtuelle 64 bits, mais non. Après l’installation de Java 64 bits, l’option -d64 fonctionne et -Xmx permet des tailles de mémoire beaucoup plus importantes.

 java -d64 -Xmx512M mypackage.Test 

Java 32 bits nécessite un espace libre contigu dans la mémoire pour s’exécuter. Si vous spécifiez une taille de segment de mémoire importante, il peut ne pas y avoir autant d’espace libre contigu dans la mémoire, même si vous disposez de beaucoup plus d’espace libre que nécessaire.

L’installation d’une version 64 bits de Java dans ces cas-là, l’exigence de mémoire contiguë s’applique uniquement à Java 32 bits.

J’ai eu la même erreur et résolu cela en configurant dans le fichier run.conf.bat

Exécutez la machine virtuelle Java avec la configuration run.conf.bat dans Jboss5x

Si la mémoire libre n’est pas disponible au fur et à mesure que vous transmettez l’instruction, veuillez apporter des modifications dans run.conf.bat

 set "JAVA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m 

Parfois, cette erreur indique que la mémoire physique et le swap sur le serveur sont réellement utilisés!

Je voyais ce problème récemment sur un serveur exécutant RedHat Enterprise Linux 5.7 avec 48 Go de RAM. J’ai trouvé que même en cours d’exécution

 java -version 

a causé la même erreur, ce qui a établi que le problème n’était pas spécifique à mon application.

Fonctionnement

 cat /proc/meminfo 

ont signalé que MemFree et SwapFree étaient tous deux bien inférieurs à 1% des valeurs MemTotal et SwapTotal, respectivement:

 MemTotal: 49300620 kB MemFree: 146376 kB ... SwapTotal: 4192956 kB SwapFree: 1364 kB 

En arrêtant quelques autres applications en cours d’exécution sur la machine, les chiffres de la mémoire libre ont quelque peu augmenté:

 MemTotal: 49300620 kB MemFree: 2908664 kB ... SwapTotal: 4192956 kB SwapFree: 1016052 kB 

À ce stade, une nouvelle instance de Java démarrerait correctement et je pouvais exécuter mon application.

(Evidemment, pour moi, c’était juste une solution temporaire; j’ai encore une tâche remarquable à faire pour examiner plus en profondeur les processus exécutés sur cette machine pour voir si quelque chose peut être fait pour réduire les niveaux devoir recourir à des applications d’arrêt.)

Erreur :

Pour l’erreur, “une erreur s’est produite lors de l’initialisation de vm n’a pas pu réserver suffisamment d’espace pour l’object heap jboss”

Cause première :

  • Allocation de mémoire incorrecte / insuffisante à notre JVM, comme indiqué ci-dessous.

  • JAVA_OPTS = “- Xms1303m -Xmx1303m -XX: MaxPermSize = 256m” dans jboss-eap-6.2 \ bin \ standalone.conf ou “JAVA_OPTS = -Xms1G -Xmx1G -XX: MaxPermSize = 256M” dans jboss-eap-6.2 \ bin \ standalone.conf.bat qui n’est rien d’autre que les parameters du pool d’allocation de mémoire JVM.

Résolution:

  • Augmentez la taille du tas. Pour augmenter la taille du tas,
  • goto -> jboss-eap-6.2 \ bin \ standalone.conf.bat ou jboss-eap-6.2 \ bin \ standalone.conf
  • change -> JAVA_OPTS = “- Xms256m -Xmx512m -XX: MaxPermSize = 256m” où -Xms est la taille minimale du tas et -Xmx la taille maximale du tas.
  • Habituellement, il n’est pas recommandé d’avoir la même taille pour min et max.

  • Si vous exécutez votre application depuis eclipse,

  • Double-cliquez sur le serveur
  • sélectionnez “Ouvrir la configuration de lancement”, vous serez redirigé vers la fenêtre “Modifier les propriétés de configuration du lancement”.
  • Dans cette fenêtre, allez dans l’onglet ‘(x) = Arguments’.
  • Dans VM Arguments, définissez votre taille de segment de mémoire comme indiqué ci-dessous.
  • “-Dprogram.name = JBossTools: serveur d’exécution JBoss EAP 6.1+” -server -Xms256m -Xmx512m -XX: MaxPermSize = 256m -Dorg.jboss.resolver.warning = true

Je sais qu’il y a déjà beaucoup de réponses, mais aucune ne m’a aidé. Au final, j’ai ouvert le fichier /etc/elasticsearch/jvm.options et modifié:

 -Xms2G -Xmx2G 

à

 -Xms256M -Xmx256M 

Cela l’a résolu pour moi. J’espère que cela aide quelqu’un d’autre ici.

Supposons que votre classe s’appelle Test dans le package mypackage . Exécutez votre code comme ceci:

 java -Xmx1024m mypackage.Test 

Cela réservera 1024 Mo d’espace de tas pour votre code. Si vous voulez 512 Mo, vous pouvez utiliser:

 java -Xmx512m mypackage.Test 

Utilisez peu de m dans 1024m m, 512m , etc.

J’ai eu un problème similaire. J’avais installé la version 32 bits de Java sur une machine 64 bits. Lors de la désinstallation de cette version et de l’installation de la version 64 bits de Java. J’ai pu résoudre le problème.

En supposant que vous ayez suffisamment de mémoire libre et que vous définissiez correctement vos arguments JVM, vous pourriez avoir un problème de fragmentation de la mémoire. Vérifiez la mémoire Java maximale sous Windows XP .

J’ai récemment fait face à ce problème. J’ai 3 applications java qui commencent avec une taille de segment de mémoire de 1024 m ou 1280 m. Java examine l’espace disponible dans swap, et s’il n’y a pas assez de mémoire disponible, jvm se ferme.

Pour résoudre le problème, j’ai dû mettre fin à plusieurs programmes auxquels une grande quantité de mémoire virtuelle était allouée.

Je travaillais sur Linux x86-64 avec un jvm 64 bits.

J’avais une bonne quantité de parameters de mémoire, mais pour moi, c’était une intelligence 64 bits avec jvm 32 bits. Une fois que je suis passé à la machine virtuelle 64 bits, l’erreur a disparu.

Quoi qu’il en soit, voici comment le réparer: Allez dans Démarrer-> Panneau de configuration-> Système-> Avancé (onglet) -> Variables d’environnement-> Variables système-> Nouveau: Nom de la variable: _JAVA_OPTIONS Valeur de la variable: -Xmx512M

OU

Changez l’appel de la fourmi comme indiqué ci-dessous.

  **  

Cela a fonctionné pour moi.

Une erreur s’est produite lors de l’initialisation de la machine virtuelle Impossible de réserver suffisamment d’espace pour le tas d’objects 1572864KB

J’ai changé la valeur de la mémoire dans les fichiers settings.grade 1536 à 512 et cela m’a aidé

Si vous exécutez un programme java: – exécutez votre programme dans un terminal en utilisant la commande correcte pour linux, ce serait “java -jar myprogram.jar” et ajoutez -Xms256m -Xmx512m, par exemple: ‘java -jar myprogram.jar Xms256m -Xmx512m ‘

Si vous utilisez un script .sh (Linux, Mac?) Ou un script .bat (Windows), ouvrez le script et recherchez les options Java si elles sont présentes et augmentez la mémoire.

Si tout cela ne fonctionne pas, vérifiez vos processus (ctrl + alt + delete sur Windows) (ps aux sur linux / mac) et arrêtez les processus qui utilisent beaucoup de mémoire et qui ne sont pas nécessaires pour votre système d’exploitation! => Essayez de relancer votre programme.

Si vous exécutez une JVM 32 bits, modifiez la taille du segment de mémoire pour obtenir une aide plus petite. Vous pouvez le faire en passant des arguments à Java directement ou à travers des variables d’environnement comme

 java -Xms128M -Xmx512M JAVA_OPTS="-Xms128M -Xmx512M" 

Pour la JVM 64 bits, une taille de -Xms512M -Xmx1536M plus importante telle que -Xms512M -Xmx1536M devrait fonctionner.

Exécutez java -version ou java -d32 , java--d64 pour Java7 pour vérifier la version que vous utilisez.

Dans CASSANDRA_HOME / bin / cassandra.bat, vous trouverez la configuration suivante

 REM JVM Opts we'll use in legacy run or installation set JAVA_OPTS=-ea^ -javaagent:"%CASSANDRA_HOME%\lib\jamm-0.3.0.jar"^ -Xms**2G**^ -Xmx**2G**^ 

Vous pouvez réduire le nombre 2G à un nombre plus petit, par exemple 1G ou même moins, et cela devrait fonctionner.

Même si vous exécutez sous unix, modifiez le fichier .sh de manière appropriée.

Parfois, il se rapporte à

 $ sysctl vm.overcommit_memory vm.overcommit_memory = 2 

Si vous le définissez sur:

 $ sysctl vm.overcommit_memory=0 

Ça devrait marcher.

Remplacez -Xmx2G^ par -Xms512M^ ou une taille de mémoire supérieure dans le fichier cassandra.bat du répertoire cassandra bin.

J’ai eu la même erreur et il a été résolu lorsque j’ai supprimé les fichiers temporaires en utilisant% temp% et en redémarrant eclipse.

Allez dans Démarrer-> Panneau de configuration-> Système-> Avancé (onglet) -> Variables d’environnement-> Variables système-> Nouveau:

Nom de la variable: _JAVA_OPTIONS Valeur de la variable: -Xmx512M

Pas besoin de faire quoi que ce soit dans le fichier POM comme ci-dessous

  1024M