104 votes

“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 "à l'aide de -Xmx3G

Tout d’abord, j’ai une boîte avec 8 Go de RAM, donc je doute que la mémoire totale est la question. Cette application fonctionne très bien sur les machines avec 6 Go ou moins.

J’essaie de réserver 3GB de l’espace en utilisant-Xmx3G sous "VM arguments" dans les configurations d’exécution dans Eclipse.

Chaque fois que j’essaie de réserver plus de 1500mb, je reçois cette erreur: "Une erreur s’est produite lors de l’initialisation de VM; Impossible de réserver suffisamment d’espace pour le tas d’objets "à l’aide de-Xmx3G

Qu’est-ce qui se passe ici?

72voto

Laurent Points 451

Se pourrait-il que vous utilisiez un JVM 32 bits sur cette machine?

42voto

E-Riz Points 12411

Ce n'est effectivement pas une Éclipse problème spécifique; c'est un général Java-sur-Windows question. C'est à cause de la façon dont la JVM alloue de la mémoire sur Windows; il insiste sur l'allocation d'un espace contigu de mémoire, ce qui souvent Windows ne peut pas fournir, même si il y a assez de séparer les morceaux de satisfaire la demande d'allocation. Il existe des utilitaires qui vont essayer de l'aider Windows "defrag" sa mémoire, ce qui serait, en théorie, aider à cette situation; mais je n'ai pas vraiment essayé dans sérieux ne peut donc pas parler à leur efficacité. Une chose que j'ai entendu parfois qui peut aider est de redémarrer Windows et, avant de lancer d'autres applications, lancer l'application Java qui a besoin de l' gros morceau de la mémoire. Si vous avez de la chance, Windows ne sera pas de la fragmentation de son l'espace mémoire encore et Java obtiendrez le bloc contigu qui est en demande.

Quelque part sur les interwebs il y a plus d'explications techniques et les analyses de cette question, mais je n'ai pas de références à portée de main.

J'ai trouvé ceci, cependant, ce qui semble utile: http://stackoverflow.com/a/497757/639520

22voto

Daniel De León Points 2842

Tout d’abord le JRE de 32bits ne pouvez pas utiliser plus de ~1.5Gb de ram. Donc, si vous en voulez plus, utiliser un JRE version 64bits.

Deuxièmement, lorsqu’une nouvelle machine virtuelle Java commence, cette somme de la propriété - Xmx de la JVM tous en cours d’exécution, et vérifier s’il y a assez de mémoire a laissé le système pour exécuter à leur propres - Xmx, si n’est pas assez alors l’erreur se produit.

17voto

Prathap Points 21

J'utilisais Liferay avec le serveur Tomcat de EDI eclipse. J'ai été coincé avec cette même erreur au clic sur le démarrage du serveur. Double-cliquez sur le serveur à partir d’éclipse. il ouvre la page de présentation du serveur. Arguments de mémoire mis à jour de -Xmx1024m -XX: MaxPermSize = 256m à -Xmx512m -XX: MaxPermSize = 256m. Ensuite, cela fonctionnait pour moi.

9voto

Adam Rofer Points 1226

Assurez-vous que l'Éclipse est effectivement en cours d'exécution la même JVM vous pensez que c'est en cours d'exécution. Si vous utilisez java dans votre navigateur web jamais, vous avez probablement une version 32 bits flottant autour de trop qui pourrait être prise prioritaire s'il est installé ou mis à jour récemment.

Pour être absolument sûr, je recommande d'ajouter ces deux lignes dans votre eclipse.ini le fichier en haut:

-vm 
C:/Java/jdk1.6.0_27/bin

...où sur ma machine, C:/Java/jdk1.6.0_27/bin où la JVM je sais, c'est 64-bit est situé. Assurez-vous d'avoir l' bin le dossier.

(En bonus, sur Windows 7, ce qui permet en fait de "épingler l'onglet" c'est pourquoi j'ai dû le faire pour mon propre usage)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X