Je reçois l'exception suivante plusieurs fois chaque fois que j'essaie 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'objets
Impossible de créer la machine virtuelle Java.
J'ai essayé d'augmenter ma mémoire virtuelle (taille de la page) et RAM taille, mais en vain. Quelqu'un peut-il me dire comment puis-je éliminer cette erreur?
Exécutez la machine virtuelle Java avec -XX:MaxHeapSize=512m
(ou un grand nombre à votre guise) (ou -Xmx512m
en bref)
Cela peut également être provoqué par la définition d'un paramètre trop grand sur une machine virtuelle HotSpot 32 bits, par exemple:
-Xms1536m -Xmx1536m
où ceci pourrait/voudrait fonctionner:
-Xms1336m -Xmx1336m
Je me suis heurté à cela lors de l'utilisation de javac, et il ne semble pas capter les options de 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.
de sorte que la solution ici il donc mis _Java_OPTIONS
-bash-3.2$ export _Java_OPTIONS="-Xmx256M"
-bash-3.2$ javac HelloWorldApp.Java
Picked up _Java_OPTIONS: -Xmx256M
Et cela compile 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 segment car il détecte le bélier dans la machine, mais il n'est pas autorisé à l'allouer à cause des ulimits.
voici comment y remédier:
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 de la 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é.
Java 32 bits requiert de l’espace libre en mémoire pour fonctionner. Si vous spécifiez une taille de segment importante, il se peut qu'il n'y ait pas autant d'espace libre contigu en 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 facilite dans ces cas-là, la configuration requise en matière de mémoire contiguë ne s'applique qu'à Java 32 bits.
Combiné avec -Xmx512M, utilisez -d64 pour vous assurer que vous utilisez une machine virtuelle 64 bits. Sur une machine 64 bits, je pensais être sûr d’exécuter une machine virtuelle 64 bits, mais non. Après avoir installé Java 64 bits, l'option -d64 fonctionne et -Xmx autorise des tailles de mémoire beaucoup plus grandes.
Java -d64 -Xmx512M mypackage.Test
J'ai eu la même erreur, et résolu cela en configurant le fichier run.conf.bat
Exécuter la machine virtuelle Java avec la configuration run.conf.bat dans Jboss5x
Si de la mémoire libre n'est pas disponible alors que vous transmettez l'instruction, veuillez apporter des modifications dans run.conf.bat.
set "Java_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m
Je sais qu'il y a déjà beaucoup de réponses ici, mais aucune d'entre elles ne m'a aidé. Finalement, j'ai ouvert le fichier /etc/elasticsearch/jvm.options
et j'ai changé:
-Xms2G
-Xmx2G
à
-Xms256M
-Xmx256M
Cela l'a résolu pour moi. Espérons que cela aide quelqu'un d'autre ici.
Pour l'erreur, "une erreur s'est produite lors de l'initialisation de vm n'a pas pu réserver assez d'espace pour l'objet tas jboss"
Allocation de mémoire incorrecte/insuffisante sur notre machine virtuelle Java, comme indiqué ci-dessous.
par exemple. 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 autre que les paramètres du pool d’allocation de mémoire JVM.
Habituellement, il n'est pas recommandé d'avoir la même taille pour min et max.
Si vous exécutez votre application à partir d’Eclipse,
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 disque pour votre code. Si vous voulez 512 Mo, vous pouvez utiliser:
Java -Xmx512m mypackage.Test
Utilisez petit m dans 1024m
, 512m
, etc.
Parfois, cette erreur indique que la mémoire physique et l'échange sur le serveur sont pleinement 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 provoqué la même erreur, ce qui a permis d'établir que le problème n'était pas spécifique à mon application.
Fonctionnement
cat /proc/meminfo
ont signalé que MemFree et SwapFree étaient tous deux nettement inférieurs à 1% des valeurs de MemTotal et de SwapTotal, respectivement:
MemTotal: 49300620 kB
MemFree: 146376 kB
...
SwapTotal: 4192956 kB
SwapFree: 1364 kB
L’arrêt de quelques autres applications en cours d’exécution sur la machine a eu pour effet d’ajouter un peu de mémoire:
MemTotal: 49300620 kB
MemFree: 2908664 kB
...
SwapTotal: 4192956 kB
SwapFree: 1016052 kB
À ce stade, une nouvelle instance de Java devrait démarrer correctement et j'ai pu exécuter mon application.
(Évidemment, pour moi, il ne s’agissait que d’une solution temporaire; j’ai encore du mal à faire un examen plus approfondi des processus en cours sur cette machine pour voir s’il est possible de faire quelque chose pour réduire les niveaux d’utilisation nominale de la mémoire, sans avoir à arrêter des applications)
J'ai eu des problèmes similaires. J'avais installé la version 32 bits de Java sur une machine 64 bits.
En désinstallant cette version et en installant la version 64 bits de Java. J'ai pu résoudre le problème.
J'ai récemment fait face à ce problème. J'ai 3 applications Java qui commencent par une taille de segment de mémoire de 1024 m ou 1280 m. Java examine l'espace disponible dans l'échange. S'il n'y a pas assez de mémoire, jvm se ferme.
Pour résoudre le problème, je devais arrêter plusieurs programmes auxquels une grande quantité de mémoire virtuelle avait été allouée.
Je courais sur Linux x86-64 avec un JVM 64 bits.
En supposant que vous disposiez de suffisamment de mémoire libre et que vous configuriez correctement les arguments de la machine virtuelle Java, vous pourriez avoir un problème de fragmentation de la mémoire. Vérifiez mémoire Java maximale sous Windows XP .
Si vous utilisez une machine virtuelle Java 32 bits, modifiez la taille du segment en réduisant l’aide. Vous pouvez faire cela en passant les arguments à Java directement ou par le biais de variables d'environnement telles que:
Java -Xms128M -Xmx512M
Java_OPTS="-Xms128M -Xmx512M"
Pour une machine virtuelle Java 64 bits, une taille de segment supérieure telle que -Xms512M -Xmx1536M
devrait fonctionner.
Exécutez Java -version
ou Java -d32
, Java--d64
pour Java7 pour vérifier la version que vous exécutez.
J'avais une bonne quantité de paramètres de mémoire, mais pour moi, il utilisait un intellij 64 bits avec jvm 32 bits. Une fois que je suis passé à la machine virtuelle 64 bits, l'erreur a disparu.
Allez dans Démarrer-> Panneau de configuration-> Système-> Avancé (onglet) -> Variables d'environnement-> Variables système-> Nouveau:
Variable name: _Java_OPTIONS
Variable value: -Xmx512M
Quoi qu'il en soit, voici comment résoudre ce problème: 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
OR
Modifiez l’appel de la fourmi comme indiqué ci-dessous.
<exec
**<arg value="-J-Xmx512m" />**
</exec>
Cela a fonctionné pour moi.
Une erreur s'est produite lors de l'initialisation de VM. Impossible de réserver suffisamment d'espace pour le tas d'objet de 1572864 Ko.
J'ai changé la valeur de la mémoire dans le fichier settings.grade 1536 à 512 et cela a aidé
Si vous exécutez un programme Java: - exécutez votre programme dans un terminal à l'aide de la commande correcte pour linux, il s'agit de 'Java -jar myprogram.jar' et ajoutez -Xms256m -Xmx512m, par exemple: ' Java -jar myprogram.jar Xms256m -Xmx512m '
Si vous exécutez 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 ce qui précède ne fonctionne pas, vérifiez vos processus (ctrl + alt + suppression sous Windows) (ps aux sur linux/mac) et supprimez les processus qui utilisent beaucoup de mémoire et qui ne sont pas nécessaires pour votre système d'exploitation! => Essayez de réexécuter votre programme.
J'ai eu la même erreur et ça a été résolu quand j'ai supprimé les fichiers temporaires en utilisant% temp% et en redémarrant Eclipse.
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 2G à un nombre plus petit, par exemple. 1G ou même moins et cela devrait fonctionner.
Idem si vous utilisez un système Unix, modifiez le fichier .sh de manière appropriée.
Parfois, il se rapporte comme
$ sysctl vm.overcommit_memory
vm.overcommit_memory = 2
Si vous le configurez pour:
$ 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.