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
- Quel est l'avantage d'utiliser std :: allocator au lieu de new en C ++?
- Le pire des cas dans Max-Heapify - Comment obtenez-vous 2n / 3?
- Jmap ne peut pas se connecter pour créer un vidage
- Comment puis-je trouver la médiane des nombres dans le temps linéaire en utilisant des tas?
- Comment afficher la taille de segment de mémoire utilisée par une application?
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:
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.)
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”
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.
Habituellement, il n’est pas recommandé d’avoir la même taille pour min et max.
Si vous exécutez votre application depuis eclipse,
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