Ne pouvait pas réserver assez d'espace pour un tas d'objets

quand je cours, j'obtiens l'exception suivante à plusieurs reprises chaque fois que j'essaie d'exécuter le programme.

Erreur s'est produite lors de l'initialisation de la VM

ne pouvait pas réserver assez d'espace pour un tas d'objets

ne pouvait pas créer la machine virtuelle Java.

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

226
demandé sur Qantas 94 Heavy 2010-12-09 20:46:37

25 réponses

lancez la JVM avec -XX:MaxHeapSize=512m (ou n'importe quel grand nombre) (ou -Xmx512m en abrégé)

183
répondu Bozho 2015-08-02 21:45:59

cela peut aussi être causé en mettant quelque chose de trop grand sur un HotSpot vm 32 bits, par exemple:

-Xms1536m -Xmx1536m

où ce pourrait /voudrait travailler:

-Xms1336m -Xmx1336m
114
répondu djangofan 2013-07-31 16:40:26

je suis tombé sur cela en utilisant javac, et il ne semble pas ramasser sur 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.

ainsi la solution ici il ainsi mis JAVA_OPTIONS

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

et ça se compile bien.

cela m'arrive sur des machines avec beaucoup de mémoire vive, mais avec des limites de mémoire plus basses. Java décide d'allouer un gros tas parce qu'il détecte la ram dans la machine, mais il n'est pas permis de l'allouer à cause de ulimits.

40
répondu Jens Timmerman 2014-11-27 14:42:17

voici comment le corriger:

  • 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 Variable: Path

Valeur Variable: %PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;

changez ceci à votre chemin approprié.

39
répondu Mohamed Adel 2016-05-30 05:39:34

combiné avec-Xmx512M utilisez-d64 pour être sûr que vous utilisez une VM 64 bits. Sur une machine 64 bits, je pensais être sûr d'exécuter 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 grandes.

java -d64 -Xmx512M mypackage.Test
20
répondu Axl 2011-11-23 03:00:42

Java 32 bits nécessite un espace libre contigu en mémoire pour fonctionner. Si vous spécifiez une grande taille de tas, il peut ne pas y avoir autant d'espace libre contigu en mémoire même si vous avez beaucoup plus d'espace libre disponible que nécessaire.

installer une version 64 bits de Java aide dans ces cas, l'exigence de mémoire contiguë ne s'applique qu'à Java 32 bits.

18
répondu JohnEye 2016-06-17 09:42:26

j'ai eu la même erreur,et j'ai résolu cela en configurant l'exécution.conf.chauve-souris

exécutez la commande JVM avec l'exécution de configuration.conf.chauve-souris dans Jboss5x

si la mémoire libre n'est pas disponible car vous passez dans la déclaration alors s'il vous plaît faire des changements dans Exécuter.conf.chauve-souris

set "JAVA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m
13
répondu Ankam shyamsundar 2011-12-28 10:42:15

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

j'ai vu ce problème récemment sur un serveur tournant sous RedHat Enterprise Linux 5.7 avec 48 Go de RAM. J'ai trouvé que même en courant

java -version

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

Running

cat /proc/meminfo

les valeurs de Memtree et de Swaptree étaient toutes deux bien inférieures à 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 apporté les chiffres de mémoire libre vers le haut un peu:

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

à ce point, une nouvelle instance de Java démarrerait bien, et j'ai été capable d'exécuter mon application.

(Évidemment, pour moi, c'était juste une solution temporaire; j'ai toujours un tâche exceptionnelle de faire un examen plus approfondi des processus en cours d'exécution sur cette machine pour voir s'il y a quelque chose qui peut être fait pour réduire les niveaux d'utilisation de la mémoire nominale, sans avoir à recourir à l'arrêt des applications.)

6
répondu Jon Schneider 2013-05-09 12:28:50

erreur:

pour l'erreur, "erreur survenue lors de l'initialisation de vm ne pouvait pas réserver assez d'espace pour objet tas jboss"

Cause Profonde:

  • attribution inappropriée/insuffisante de mémoire à notre JVM, comme indiqué ci-dessous.

  • e.g. JAVA_OPTS="-Xms1303m-Xmx1303m-XX:MaxPermSize=256m " in jboss-eap-6.2\bin\autonome.conf or "JAVA_OPTS=-Xms1G-Xmx1G-XX:MaxPermSize=256M" in jboss-eap-6.2\bin\standalone.conf.bat qui n'est rien d'autre que les paramètres de la réserve de mémoire JVM.

résolution:

  • augmenter la taille du tas. Pour augmenter la taille du tas,
  • goto - > jboss-eap-6.2\bin\standalone.conf.chauve-souris ou jboss-eap-6.2\bin\autonome.conf
  • modifier ->JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m" où -Xms est la valeur Minimale de la taille du segment et -Xmx est la taille Maximale du tas.
  • généralement son non recommandé d'avoir la même taille pour min et max.

  • si vous utilisez votre application à partir d'eclipse,

  • double clic sur le serveur
  • sélectionnez "open launch configuration" vous serez redirigé vers la fenêtre 'Modifier les propriétés de configuration de lancement'.
  • dans cette fenêtre, allez à l'onglet '(x)=Arguments'.
  • dans les Arguments VM, définissez la taille de votre tas comme indiqué ci-dessous
  • " - Dprogram.nom=JBossTools: JBoss EAP 6.1+ Runtime Server" -server-Xms256m-Xmx512m-XX:MaxPermSize = 256m-Dorg.jboss.résolveur.warning=true
6
répondu Prabhakar 2014-01-08 11:17:37

je sais qu'il y a déjà beaucoup de réponses ici, mais aucune ne m'a aidé. À la fin j'ai ouvert le fichier /etc/elasticsearch/jvm.options et j'ai changé:

-Xms2G
-Xmx2G

à

-Xms256M
-Xmx256M

qui l'a résolu pour moi. Espérons que cela aide quelqu'un d'autre ici.

6
répondu kramer65 2017-02-17 09:18:15

supposons que votre classe s'appelle Test dans le paquet mypackage . Exécutez votre code comme ceci:

java -Xmx1024m mypackage.Test

cela vous réserve 1024 Mo de tas d'espace pour votre code. Si vous voulez 512 Mo, vous pouvez utiliser:

java -Xmx512m mypackage.Test

utiliser little m dans 1024m , 512m , etc

5
répondu euphoria83 2012-11-08 09:40:22

j'ai eu un problème similaire . J'avais installé une version 32 bits de Java sur une machine 64 bits. Après avoir désinstallé cette version et installé la version 64 bits de Java. J'ai été en mesure de résoudre le problème.

5
répondu Manu Sharma 2015-12-14 23:18:42

en supposant que vous avez assez de mémoire libre et que vous configurez correctement vos arguments JVM, vous pourriez avoir un problème de fragmentation de la mémoire. Cochez la case Java maximale de la mémoire sous Windows XP .

2
répondu daramasala 2017-05-23 12:02:51

j'ai récemment fait face à cette question. J'ai 3 applications java qui commencent avec une taille de tas de 1024m ou 1280m. Java examine l'espace disponible dans le swap, et s'il n'y a pas assez de mémoire disponible, la jvm disparaît.

pour résoudre le problème, j'ai dû mettre fin à plusieurs programmes qui avaient une grande quantité de mémoire virtuelle allouée.

je courais sur x86-64 linux avec un jvm 64 bits.

2
répondu codeDr 2013-02-12 21:16:21

j'avais la bonne quantité de paramètres de mémoire mais pour moi il était en utilisant un intellij 64bit avec JVM 32 bits. Une fois que je suis passé à 64 bits VM, l'erreur avait disparu.

2
répondu vsingh 2015-01-19 20:52:26

en tout cas, voici comment le corriger: Aller à Start - > Panneau de configuration - > système - > Avancé (tab) - >Variables D'environnement - > Variables système - > Nouveau: Nom de la Variable: _JAVA_OPTIONS Valeur Variable: - Xmx512M

ou

changez l'appel ant comme indiqué ci-dessous.

   <exec
        **<arg value="-J-Xmx512m" />**
    </exec>

ça a marché pour moi.

1
répondu Sudhakar 2014-07-03 11:29:28
Une erreur

s'est produite lors de l'initialisation de VM Ne pouvait pas réserver assez d'espace pour 1572864KB tas d'objets

j'ai changé la valeur de la mémoire dans les paramètres.grade fichier 1536 à 512 et il a aidé

1
répondu Haris Durrani 2016-10-13 20:10:06

dans le cas où vous exécutez un programme java: - exécutez votre programme dans un terminal en utilisant la commande correcte pour linux il serait 'java-jar myprogram.jar ' et add-Xms256m-Xmx512m, par exemple: 'java-jar myprogram.jar Xms256m -Xmx512m "

dans le cas où vous exécutez un .SH script (linux, mac?) ou une .bat script (windows) ouvrez le script et recherchez les options java si elles sont présentes et augmentent la mémoire.

si tout ce qui précède ne travaillez, vérifiez vos processus (ctrl+alt+delete sur windows) (ps aux sur linux / mac) et tuez les processus qui utilisent allot de mémoire et ne sont pas nécessaires pour votre système d'exploitation! => Essayer de ré-exécuter votre programme.

0
répondu Fico 2013-12-26 09:31:54

si vous utilisez 32bit JVM, changer la taille de tas en plus petit serait probablement utile. Vous pouvez faire cela en passant args à java directement ou par des variables d'environnement comme suit,

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

pour JVM 64bit, une plus grande taille de tas comme -Xms512M -Xmx1536M devrait fonctionner.

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

0
répondu h--n 2014-04-04 04:22:32

in 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 pour par exemple 1G ou même moins et il devrait fonctionner.

même si vous utilisez la boîte unix, changez .SH file appropriately.

0
répondu Deepak Singhvi 2016-03-05 12:50:01

parfois il se rapporte à

$ sysctl vm.overcommit_memory
vm.overcommit_memory = 2

si vous le définissez à:

$ sysctl vm.overcommit_memory=0

ça devrait marcher.

0
répondu kay 2017-01-18 15:21:01

remplacer -Xmx2G^ par -Xms512M^ ou toute taille de mémoire supérieure dans cassandra.fichier bat dans cassandra répertoire bin.

0
répondu kiran 2017-04-21 10:22:56

j'ai eu la même erreur et elle a été résolue quand j'ai supprimé les fichiers temp en utilisant %temp% et redémarrer eclipse.

0
répondu Viswanath Nuggu 2017-10-30 14:05:25

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 Variable: - Xmx512M

0
répondu smoka 2018-04-24 13:21:03

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

<configuration>
    <maxmemory>1024M</maxmemory>
</configuration>
-2
répondu Harish 2012-12-19 13:29:35